如何使用 Gson 库从 JSON 文件中检索数据

问题描述 投票:0回答:2

我有一个使用 Gson 解析的 JSON 文件,我想在其中检索一个名为“ModelUrl”的变量。看起来,数据是另一个节点的子数据或任何你调用的数据,因此我无法从变量中获取我想要的值。我尝试使用这样的函数:System.out.println(jsonObject.get("ModelUrl")),但它只返回 null。我怎样才能迭代里面的所有变量并得到我特别想要的变量?

放在这里的数据有点大,但我要举一个例子来说明我所说的“子数据”的意思。

https://drive.google.com/file/d/11Ukmu9QjFPN3GCnr0Rp3QzHmoxm8XmUs/view?usp=sharing

想看的话这里有数据

{"ProductGroup":2,"ProductGender":2,"Menu":{"ProductGroup":2,"Gender":2,"MenuId":1,"MenuTextKey":"UIService_Menu_1_1","ParentMenuId":null,"StartDate":null,"EndDate":null,"Status":1,"ApplicationId":0,"RegionId":0,"DisplayOrderId":0,"CSS":"","SubMenu":[],"MenuItemList":[{"CategoryId":1185,"ZoneMenuItemId":25,"ZoneId":6,"ZonePlatform":1,"ZoneMenuItemDisplayOrder":0,"ZoneMenuItemStatus":true,"PlatformName":"Desktop","MenuType":1,"MenuItemId":5545,"MenuId":1,"MenuItemTextKey":"UIService_MenuItem_2_580_1097","LinkKey":"UIService_MenuItem_LinkUrlKey_2_580_1097","LinkKeyText":"pijama","StartDate":"2019-05-08T05:28:29.953","EndDate":"2099-01-01T00:00:00","Status":1,"RegionId":0,"DisplayOrder":0,"CSS":"","MenuItemText":"Pijama Takımı","Path":"/tr-TR/TR/kategori/kadin/pijama","IsVisible":true,"MetaTitleKey":"","MetaTitle":null,"MetaDescriptionKey":"","MetaDescription":null,"MenuItemPhotoUrl":"","Gender":2,"ProductGroup":2,"ProductGroupGenderText":"Kadın","IsOutletCategoryRemoved":false}

//Something like this. 

这是我为检索数据编写的基本脚本。

JsonElement jsonElement = JsonParser.parseString(data);
JsonObject jsonObject = jsonElement.getAsJsonObject();
System.out.println(jsonObject.get("ModelUrl"));


java json gson
2个回答
0
投票

不确定您的 JSON 数据,但根据您提出的问题给出一般解决方案:

//Assuming JSON data is stored in a String with the name jsonData
//Parse JSON

JsonObject jsonObject = new Gson().fromJson(jsonData, JsonObject.class);

//Assuming it's inside MenuItemList

JsonArray menuItemList = jsonObject.getAsJsonObject("Menu").getAsJsonArray("MenuItemList");

// Iterate array

for (JsonElement element : menuItemList) {
    JsonObject menuItem = element.getAsJsonObject();
    String modelUrl = menuItem.get("ModelUrl").getAsString();
    System.out.println(modelUrl);
}

这不是您问题的解决方案,但它可能会帮助您理解。


-3
投票

我让 chatgpt 解决这个问题,没想到它给了我所需的算法。据我所知,禁止发布 chatgpt 答案,所以如果有人遇到此类问题,我可以把代码放在后面。

© www.soinside.com 2019 - 2024. All rights reserved.