如何在Java中解析Json文件时无法转换com.google.gson.JsonArray

码_

我第一次在Java中解析json文件。我的json文件结构是固定的(我无法更改)。我经历了不同的答案,但对我的json没有帮助。我想在一个列表中列出所有组名在另一个列表中找到单元名。请帮助解决此错误,谢谢。我使用下面的代码并尝试从json读取,但解析失败。JSON文件:

[
    {"No":"1","Component":"Amazon","group_id":"1","Group Name":"shop","Unit Name":"UN","PM":"NULL"},
    {"No":"2","Component":"Amazon","group_id":"1","Group Name":"shop","Unit Name":"UM","PM":"NULL"},
    {"No":"3","Component":"Amazon","group_id":"1","Group Name":"shop","Unit Name":"UP","PM":"NULL"},
    {"No":"4","Component":"Amazon","group_id":"1","Group Name":"shop","Unit Name":"SO","PM":"NULL"},
    {"No":"5","Component":"Amazon","group_id":"1","Group Name":"cart","Unit Name":"SP","PM":"NULL"},
    {"No":"6","Component":"Amazon","group_id":"2","Group Name":"payment","Unit Name":"NZ","PM":"TRUE"}
]

代码试用1:

JsonArray jsonArray = new JsonArray();
            Object obj = new JsonParser().parse(new FileReader(JSON_FILE_PATH));
            JsonObject jsonObject = jsonArray.getAsJsonObject();
            String groupName = jsonObject.get("Group Name").toString();
            

ERROR: Exception in Test Case: (IllegalStateException: Not a JSON Object: [])
java.lang.IllegalStateException: Not a JSON Object: []

代码试用2:

Object obj = new JsonParser().parse(new FileReader(JSON_FILE_PATH));
JsonObject jsonObject = (JsonObject) obj;            
String firstName = jsonObject.get("Group Name").toString();

 
ERROR: Exception in Test Case: (ClassCastException: com.google.gson.JsonArray cannot be cast to com.google.gson.JsonObject)
java.lang.ClassCastException: com.google.gson.JsonArray cannot be cast to com.google.gson.JsonObject

编辑的解决方案:

JsonArray jsonArray = new JsonParser().parse(new FileReader(fileName)).getAsJsonArray();
          
            ArrayList<String> pmGrpListFromWebOm = new ArrayList<>();
            for (JsonElement jsonObjectElement : jsonArray) {
                JsonObject jsonObject = jsonObjectElement.getAsJsonObject();
                String grpname= jsonObject.get("Group Name").toString();
                pmGrpListFromWebOm.add(grpname);
            }
亚历克斯·鲁登科

JSON文件包含对象数组,因此您应该能够JsonArray立即读取usingparser.parse方法和显式强制转换。

然后,您应该迭代数组并JsonObject使用get方法访问其项目

JsonParser parser = new JsonParser();
JsonArray jsonArray = (JsonArray) parser.parse(new FileReader(JSON_FILE_PATH));

for (int i = 0; i < jsonArray.size(); i++) {
    JsonObject item = (JsonObject) jsonArray.get(i);
    String groupName = item.get("Group Name").getAsString();
    System.out.printf("%d group=%s%n", i, groupName); // item index and groupName
}

输出将是:

0 group=shop
1 group=shop
2 group=shop
3 group=shop
4 group=cart
5 group=payment

但是,JsonParser不建议使用Gson ,建议使用Gson对象映射器,它允许以类型安全的方式读取/写入对象。

可以将示例JSON中的每一项视为键-值对的映射,其中键和值均为String。

Gson gson = new Gson();

// prepare type information
Type itemListType = new TypeToken<ArrayList<Map<String, String>>>(){}.getType();

// read the list
List<Map<String, String>> list = gson.fromJson(json, itemListType);

// process items in the list
for (Map<String, String> item : list) {
    String no = item.get("No");
    String groupName = item.get("Group Name");
    System.out.printf("no=%s group=%s%n", no, groupName);
}

输出:

no=1 group=shop
no=2 group=shop
no=3 group=shop
no=4 group=shop
no=5 group=cart
no=6 group=payment

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用于JSON解析的Android模型显示ClassCastException:com.google.gson.JsonObject无法转换为com.google.gson.JsonArray

com.google.gson.JsonObject不能转换为com.google.gson.JsonArray在Java中

用GSON解析复杂的JsonArray

GSON:JsonArray不能转换到JsonPrimitive错误

如何使用GSON WHen对象解析JSON是JSONObject还是JSONArray

Gson JsonArray漂亮的打印

JsonArray和Gson

如何使用Gson将JSONArray转换为List?

如何将Gson的JsonArray转换为流

在Gson中,如何将JsonArray添加到JsonObject?

Gson 无法将位于 json 对象中的 json 数组字符串解析为 JsonArray

用GSON作为默认解析器翻新获得JsonArray

GSON - 将字符串转换为 JsonArray

Java:循环遍历 JSON 字符串(无法转换为 JsonArray (gson))

使用Java和Gson从jsonelement的jsonarray获取价值

如何使用Java中的Gson库将对象列表自动转换为JSONArray?

使用com.google.gson解析JSON

从 MongoDB 以 google.gson.JsonArray 格式返回大型数据集的有效方法

使用gson从JsonArray获取值

如何在Android Studio中修复“无法解决:com.google.gson:gson:2.8.5”

com.google.gson.JsonSyntaxException 解析简单的 JSON Inputstream 时

无法解决:com.google.code.gson:gson.2.2.2

无法解决:com.google.code.gson:gson:2.3.1

无法解析JsonArray中的JsonArray

获取java.lang.NoClassDefFoundError:com / google / gson / Gson

com.google.gson.JsonPrimitive无法转换为com.google.gson.JsonObject错误

Gson将长度为1的json数组解析为JsonArray对象而不是JsonObject对象

使用Google的Gson进行严格的JSON解析?

使用Google Gson解析Json Feed