【问题标题】:java json string into json arrayjava json字符串转换成json数组
【发布时间】:2020-07-01 17:35:15
【问题描述】:

我有一个 JsonArray 作为一个字符串,其中包含多个 JsonObjects。由于我不是Java开发人员,所以我有点困惑,因为将JsonObjects转换为字符串并将字符串转换为JsonObjects是如此复杂。

我有这个JsonArray 作为字符串。

[{
    "id":"XXXX-XXXX-XXXX-XXXX-XXXX",
    "name":"Name"
},{
    "id":"XXXX-XXXX-XXXX-XXXX-XXXX",
    "name":"Name"
}]

它发生了变化,我不知道它包含哪些数据。

目标:我需要将 json 字符串转换为 JsonArray 以便我可以使用。我尝试了 gson,但我只得到了空对象。

我尝试了什么:

Gson g = new Gson();
JSONObject jsons[] = g.fromJson(JsonString, JSONObject[].class);

输出:

Log.e ( "JSON", Integer.toString(jsons.length)); ---> 2 (Right!)
Log.e ( "JSON", jsons[0].toString()); ---> { } empty Object 

【问题讨论】:

  • 没那么复杂。 I tried gson but I only got empty objects. 发布您尝试过的代码。您可能正在做一些容易解决的事情。
  • 更新了我的帖子

标签: java arrays json type-conversion


【解决方案1】:

您必须使用JsonArray 而不是JsonObject[]。 示例代码:

String json = "[{ " + 
              "    \"id\":\"XXXX-XXXX-XXXX-XXXX-XXXX\", " + 
              "    \"name\":\"Name\" " + 
              "},{ " + 
              "    \"id\":\"XXXX-XXXX-XXXX-XXXX-XXXX\", " + 
              "    \"name\":\"Name\" " + 
              "}]";
Gson gson = new Gson();
JsonArray array = gson.fromJson(json,JsonArray.class);
System.out.println(array);

输出:

[{"id":"XXXX-XXXX-XXXX-XXXX-XXXX","name":"Name"},{"id":"XXXX-XXXX-XXXX-XXXX-XXXX","name":"Name"}]

如果你想使用JsonObject[],你可以这样做:

JsonArray array = gson.fromJson(json,JsonArray.class);
JsonObject[] objects = new JsonObject[array.size()];
for(int i=0;i<array.size();i++)
    objects[i] = array.get(i).getAsJsonObject();
for(JsonObject x : objects)
    System.out.println(x);

输出:

{"id":"XXXX-XXXX-XXXX-XXXX-XXXX","name":"Name"}
{"id":"XXXX-XXXX-XXXX-XXXX-XXXX","name":"Name"}

【讨论】:

  • 我不需要它作为JsonObject[],JsonArray 也可以。您上面的代码有效,不知道为什么我自己找不到它,可能是因为我工作时间太长了。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
相关资源
最近更新 更多