为了账号安全,请及时绑定邮箱和手机立即绑定

解析json时,字符串“ jo”有什么问题?

解析json时,字符串“ jo”有什么问题?

幕布斯6054654 2021-04-06 16:18:25
我有json字符串:String jsonString = "{\"first\":{\"1\":[{\"id\":1,\"name\":\"jo\"}]}}";JSONObject users = new JSONObject(response);JSONArray sub = users.getJSONArray("first");但是在JSONArray子我有错误:org.json.JSON.typeMismatch上的org.json.JSONException但是如果我有:String jsonString = "{\"first\":{\"1\":[{\"id\":1,\"name\":\"other\"}]}}";JSONObject users = new JSONObject(response);JSONArray sub = users.getJSONArray("first");它没有任何错误。为什么用字符串"jo"我有一个错误?
查看完整描述

3 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

首先不是JSONArray,而是JSONObject。因此将其强制转换为JSONObject,然后从中获取1。您将获得JSONArray。


以下是两个json字符串的工作示例:


      String jsonString = "{\"first\":{\"1\":[{\"id\":1,\"name\":\"jo\"}]}}";

    //String jsonString = "{\"first\":{\"1\":[{\"id\":1,\"name\":\"other\"}]}}";


    JSONObject users;

    try {

        users = new JSONObject(jsonString);

        users=users.getJSONObject("first");

        JSONArray sub = users.getJSONArray("1");

        System.out.println(sub.get(0));

    } catch (JSONException e) {


        // TODO Auto-generated catch block

        e.printStackTrace();

    }

输出:


{“ name”:“ jo”,“ id”:1}


查看完整回答
反对 回复 2021-04-21
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

您的json字符串是错误的。没有啦JsonArray


像这样更改字符串:


String jsonString = "{\"first\":[{\"id\":1,\"name\":\"name1\"},{\"id\":2,\"name\":\"name2\"}]}";


JSONObject users = new JSONObject(jsonString);

JSONArray sub = users.getJSONArray("first");

for (int i = 0; i < sub.length(); i++) {

    JSONObject user = sub.getJSONObject(i);


    String userID = user.gatInt("id");

    String userName = user.gatString("name");

}


查看完整回答
反对 回复 2021-04-21
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

您确定由于将字符串更改为“ jo”而收到此类错误,因为这对我来说似乎不是问题。我已经对您的代码进行了一些修改,并且工作正常:


String jsonString = "{\"first\":{\"1\":[{\"id\":1,\"name\":\"jo\"}]}}";


JSONObject users = JSON.parse(jsonString); 

JSONArray sub = users.first;


查看完整回答
反对 回复 2021-04-21
  • 3 回答
  • 0 关注
  • 175 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信