当前位置: 首页 > 知识库问答 >
问题:

如何在java中读取json字符串?[副本]

曾景龙
2023-03-14

这是我的json字符串

[
    {
        "id": 1,
        "ip": "192.168.0.22",
        "folderName": "gpio1_pg3"
    },
    {
        "id": 2,
        "ip": "192.168.0.22",
        "folderName": "gpio2_pb16"
    }
]

我想迭代数组,因为我将为每个数组成员创建一个特殊对象。

这就是我从http url获取json字符串的方式。

BufferedReader bufferedReader = 
         new BufferedReader(new InputStreamReader(inputStreams, Charset.forName("UTF-8")));

String jsonText = readAll(bufferedReader);

你能给我举个例子,说明如何获得所有json元素的数组吗。一个数组元素必须包含id、ip和folderName。

共有2个答案

杨飞语
2023-03-14

尝试

JSONArray array = new JSONArray(jsonStr); 

for(int i=0; i<array.length(); i++){
    JSONObject jsonObj = array.getJSONObject(i);
    System.out.println(jsonObj.getString("id"));
    System.out.println(jsonObj.getString("ip"));
    System.out.println(jsonObj.getString("folderName"));
}

或者您可以尝试使用Google的JSON库(google-gson)

JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(your json string);
锺离宸
2023-03-14

Jackson或GSON是将JSON字符串转换为对象或映射的常用库。

Jackson示例:

String json = "[{\"foo\": \"bar\"},{\"foo\": \"biz\"}]";
JsonFactory f = new JsonFactory();
JsonParser jp = f.createJsonParser(json);
// advance stream to START_ARRAY first:
jp.nextToken();
// and then each time, advance to opening START_OBJECT
while (jp.nextToken() == JsonToken.START_OBJECT)) {
    Foo foobar = mapper.readValue(jp, Foo.class);
    // process
    // after binding, stream points to closing END_OBJECT
}

public class Foo {
    public String foo;
}
 类似资料:
  • 我刚来Java,如果这是个明显的问题,我很抱歉。 我正在尝试逐个字符读取字符串以创建树节点。例如,输入,节点为 我注意到了 我可以用一个循环来获得所有的角色吗?就像 我试过了,但不管用。 我该怎么做? 非常感谢你的帮助。 扫描器读取器=新扫描器(System.in);System.out.println(“将节点输入为大写字母,不带空格,结尾为'/'”);int i=0;char node=rea

  • 问题内容: 我有一个有效的Json格式的字符串,它看起来像这样: 我想读取不同的字段,例如所有fa_titles,我使用$ obj = json_decode($ str,true); 将此转换为Json,然后回显sizeof($ obj [‘result’]); 告诉我它有5个结果对象,但是现在如何访问fa_title或en_title字段? 问题答案: 在JSON中,数组由方括号(和)指定,而

  • 问题内容: 我使用的是MIDP 2.0(JSR 118),我只是注意到J2ME中没有用于字符串的读取器。 有谁知道您应该如何从或以与平台无关的方式(即在两个具有不同型号的启用Java的手机之间)读取字符串? 问题答案: 或者看看。 它确实需要对InputStream上读取的字符串进行适当的编码(如对应的),因此它可能不是您想要的- 但它确实可以在不同的手机/型号等上工作。

  • 我正在编写一个应用程序,它从Timezonedb API中提取数据,以获得可用时区列表: https://timezonedb.com/references/list-time-zone TableViewController: 感谢任何帮助。谢谢你。

  • 问题内容: 我正在将jQuery AJAX POST发布到Servlet,并且数据采用JSON字符串的形式。它已成功发布,但在Servlet端,我需要将这些键- 值对读入Session Object并将其存储。我尝试使用JSONObject类,但无法获取它。 这是代码段 在Servlet方面 问题答案: 您实际上并没有解析json。

  • 我得到了一个复杂的JSON字符串,如下所示。 这还不完整。但这怎么读呢?