当前位置: 首页 > 面试题库 >

如何在JAVA中解析此JSON响应

高寒
2023-03-14
问题内容

我想解析以下Json响应:

{
"MyResponse": {
    "count": 3,
    "listTsm": [{
        "id": "b90c6218-73c8-30bd-b532-5ccf435da766",
        "simpleid": 1,
        "name": "vignesh1"
    },
    {
        "id": "b90c6218-73c8-30bd-b532-5ccf435da766",
        "simpleid": 2,
        "name": "vignesh2"
    },
    {
        "id": "b90c6218-73c8-30bd-b532-5ccf435da766",
        "simpleid": 3,
        "name": "vignesh3"
    }]
 }
}

我尝试使用SIMPLE JSON解析器,但这对我不起作用:

Object obj = parser.parse(resp);
JSONObject jsonObject = (JSONObject) obj;
JSONArray response = (JSONArray) jsonObject.get("MyResponse");

//JSONArray arr=new JSONArray(yourJSONresponse);
ArrayList<String> list = new ArrayList<String>();
for(int i=0; i<response.size(); i++){
    list.add(response.get(i)("name"));
}

问题答案:
public static void main(String[] args) throws JSONException {
    String jsonString  = "{" + 
            "   \"MyResponse\": {" + 
            "       \"count\": 3," + 
            "       \"listTsm\": [{" + 
            "           \"id\": \"b90c6218-73c8-30bd-b532-5ccf435da766\"," + 
            "           \"simpleid\": 1," + 
            "           \"name\": \"vignesh1\"" + 
            "       }," + 
            "       {" + 
            "           \"id\": \"b90c6218-73c8-30bd-b532-5ccf435da766\"," + 
            "           \"simpleid\": 2," + 
            "           \"name\": \"vignesh2\"" + 
            "       }," + 
            "       {" + 
            "           \"id\": \"b90c6218-73c8-30bd-b532-5ccf435da766\"," + 
            "           \"simpleid\": 3," + 
            "           \"name\": \"vignesh3\"" + 
            "       }]" + 
            "   }" + 
            "}";


    JSONObject jsonObject = new JSONObject(jsonString);
    JSONObject myResponse = jsonObject.getJSONObject("MyResponse");
    JSONArray tsmresponse = (JSONArray) myResponse.get("listTsm");

    ArrayList<String> list = new ArrayList<String>();

    for(int i=0; i<tsmresponse.length(); i++){
        list.add(tsmresponse.getJSONObject(i).getString("name"));
    }

    System.out.println(list);
}   
}

输出:

[vignesh1, vignesh2, vignesh3]

评论: 我没有添加验证

[编辑]

加载json字符串的其他方法

    JSONObject obj= new JSONObject();
    JSONObject jsonObject = obj.fromObject(jsonString);
    ....


 类似资料:
  • 问题内容: 我想拉出用户块。JSON结果将始终更改,有时将返回4个用户,有时将返回10个,等等。 问题答案: 使用JSONObject

  • 问题内容: 我收到此响应的结果是对服务器的GET请求 我只想从上述json响应中提取的值。 我正在使用此代码来获得此响应 我的问题是,我该如何解析并获取only 标签的值。谢谢 问题答案: 您可以解析当前的json字符串以从中获取它:

  • 我有这个JSON结构,我试图解析为一个Java对象,但不知道我在这里错过了什么。 我有报价数据: 我已经恢复正常了,问题出在Country object上。 国家: 国家数据: 我收到以下错误: Servlet。路径为[]的上下文中的servlet[dispatcherServlet]的service()引发了异常[请求处理失败;嵌套异常为org.springframework.web.clien

  • 问题内容: 我从服务中接收到非常深的JSON对象字符串,我必须将其解析为JSON对象,然后将其映射到类。 如何在Kotlin中将JSON字符串转换为对象? 在映射到各个类之后,我使用了Jackson的StdDeserializer。当对象具有必须反序列化为类的属性时,就会出现问题。我无法在另一个反序列化器中获取对象映射器,至少我不知道该怎么做。 在此先感谢您的帮助。最好是在本地,我试图减少所需的依

  • 问题内容: 前缀/ dir1 / dir2 / dir3 / dir4 / .. 如何在Java中从上述字符串中解析出值? 这里的前缀可以是: / usr / local / apache2 / resumes 问题答案: 如果要在字符处分割,该方法将起作用: 例如: 输出量 编辑 前缀为a 的情况,我们知道前缀是什么: 没有前缀的子字符串由方法组成。也就是说,然后通过运行。 输出: 重新编辑 如

  • Google Developer Console显示我的应用在过去一个月中收到了两个相同的错误,但此并未指定错误源自的类或文件。我看不到任何具体内容。以下是两种不同设备的错误: 三星Galaxy S8 Active(cruiserlteatt),4096MB RAM,Android 7.0报告1/2 三星Galaxy S7(heroqltespr),4096MB RAM,Android 7.0报告