【问题标题】:Value to type String cannot be Convert into JsonObject?String 类型的值不能转换为 JsonObject?
【发布时间】:2016-02-02 05:20:19
【问题描述】:

如果用户输入正确的登录名,我正在使用 volley 制作简单的登录应用程序,当我尝试将 jsonobject 解析为字符串时,他们将获得来自服务器的 json 响应,我正在获取类型字符串的值无法转换为 jsonobject 如何将jsonobject 转换为字符串我的json 响应将是这样的:

{"loginResult":"EmployeeCode: 4112 ModuleID:1 ModuleName:XXX UserID:762"}

到目前为止,试图解析这个 json 对象的是:

 String resp=response.toString();
        try {
            JSONObject yog=new JSONObject(resp);
            String yogs=yog.getString("loginResult");
            String yogan=yog.getString("EmployeeCode");


        } catch (JSONException e) {
            e.printStackTrace();
        }

作为一个初学者,我真的很困惑将这个 jsonobject 解析为字符串,谁能解释我如何解析这个 jsonobject !!!

【问题讨论】:

  • 我猜 JSON 不正确。登录结果中的元素之间没有区别。
  • 那么如何解析这个
  • 不是正确的 JSON。在后端,您需要正确格式化响应,否则将无法解析。
  • {"loginResult":"{\"UserLoginID\":864,\"UserID\":864,\"EmployeeCode\":\"PI4264\",‌​\"Password\" :\"ÆÍâäàâ\",\"IsPasswordChanged\":false,\"ModuleName\":\"XXX\",\"Modu‌​leID\":1,\"EmployeeName\":\"XXX \"}" } 你能告诉我如何解析这个

标签: java android json


【解决方案1】:

您的 JSON: { "loginResult": "EmployeeCode: 4112 ModuleID:1 ModuleName:XXX UserID:762" }

所以,从这个 JSON 中,你只能在 loginResult 上使用 jsonObject.getString(),这个字符串的值是= EmployeeCode: 4112 ModuleID:1 ModuleName:XXX UserID:762 所以从你的代码中删除String yogan=yog.getString("EmployeeCode");

【讨论】:

  • 我需要在员工代码、模块名称、用户 ID 中将其作为单独的字符串获取
  • 在这种情况下,您没有有效的 JSON,但是,您仍然可以使用 String.split() 处理它,但尝试以 { "loginResult": { "EmployeeCode": 4112, "ModuleID": 1, "ModuleName": "XXX", "UserID": 762 } } 的格式获取 JSON 响应
  • 现在你能告诉我如何将此 json 解析为字符串 {"loginResult":" UserID:762"}
  • 如果你的回复是一个字符串,try{ JSONObject jsonObj=new JSONObject(response_string); String userId=jsonObject.getString("UserID");}
  • {"loginResult":"{\"UserLoginID\":864,\"UserID\":864,\"EmployeeCode\":\"PI4264\",‌​\"Password\" :\"ÆÍâäàâ\",\"IsPasswordChanged\":false,\"ModuleName\":\"XXX\",\"Modu‌​leID\":1,\"EmployeeName\":\"XXX \"}" } 你能告诉我如何解析这个
【解决方案2】:

您的 json 响应中有错误。理想情况下,这应该是您的 json。

{"loginResult":{"EmployeeCode":4400,"ModuleID":1,"ModuleName":"XXX","UserID":1213}}

尝试以下方法

JSONObject result=resp.getJSONObject("loginResult");
String empcode=result.getString("EmployeeCode");

【讨论】:

  • {"loginResult":"{\"UserLoginID\":864,\"UserID\":864,\"EmployeeCode\":\"PI4264\",\"Password\":\ "ÆÍâäàââ\",\"IsPasswordChanged\":false,\"ModuleName\":\"XXX\",\"ModuleID\":1,\"EmployeeName\":\"XXX \"}"} 你能说我如何解析这个
  • 一旦你的 json 以预期的格式准备好,我已经编写了解析的逻辑。您需要修正服务器响应并从移动端尝试
  • 当我尝试获取用户 ID 时,反斜杠很多,它不会为用户 ID 抛出任何值
  • 这是您应该从服务器获得的响应。确保你得到这个: {"loginResult":{"EmployeeCode":4400,"ModuleID":1,"ModuleName":"XXX","UserID":1213}} 。没有这个你会得到错误。
  • 你应该得到我在回答中提到的响应。否则这是一个错误。用于验证jsoneditoronline.org
猜你喜欢
  • 2017-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-03
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多