为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Java中提取JSON数组的特定字段并将其存储在字符串中

如何在Java中提取JSON数组的特定字段并将其存储在字符串中

慕雪6442864 2022-08-03 10:26:10
我有JSON数据,并希望仅提取Java中特定字段的数据并将其存储在String中。示例,从问题,键:651,从项目名称:测试,已更新,已创建 此详细信息用于数组问题的所有记录。示例 JSON 数据:"issues": [        {           "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",           "key": "651",           "fields": {                "project": {                    "name": "test",                    "Urls": {                    "48x48": "https://test1.com",                        "24x24": "https://test2.com"                        },                        },                        "updated": "2019-03-05T13:24:56.000-0800",                "created": "2019-03-05T13:24:56.000-0800",                "status": {                "description" : "";                "name": "",                }            }        },                {           "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",           "key": "321",           "fields": {                "project": {                    "name": "test2",                    "Urls": {                    "48x48": "https://test1.com",                    "24x24": "https://test2.com"                    },                },                        "updated": "2019-03-05T13:24:56.000-0800",                "created": "2019-03-05T13:24:56.000-0800",                "status": {                "description" : "";                "name": "",                }            }            }    ]到目前为止,我尝试过的Java代码jar使用 - (gson-2.8.5)
查看完整描述

2 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

获取值时,可以转换为字符串。像这样更改代码,看看是否有帮助。


JsonObject object = (JsonObject) new JsonParser().parse(new FileReader("C:\\MyData\\response.json"));

                JsonArray issues = (JsonArray) object.get("issues");

                JsonObject issues0 = (JsonObject) issues.get(0);

                String issue_key = (String) issues0.get("key");//<---here

                System.out.println("Value of key is -> " + issue_key); 

更新


如果你想要所有的值,只需把它放在“for”中:


JsonObject object = (JsonObject) new JsonParser().parse(new FileReader("C:\\MyData\\response.json"));

                JsonArray issues = (JsonArray) object.get("issues");

                for(int i=0; i<issues.size(); i++){

                    JsonObject issue = (JsonObject) issues.get(i);

                    String issue_key = (String) issue.get("key");

                    System.out.println("Value of key" + Integer.toString(i + 1) + " is -> " + issue_key);

                }

更新 2


“更新”和“创建”的数据不在“问题”内,它们位于“字段”内,以访问它们,您需要从“字段”中获取它们。您必须逐级进入内部才能访问变量:


JsonObject object = (JsonObject) new JsonParser().parse(new FileReader("C:\\MyData\\response.json"));

                JsonArray issues = (JsonArray) object.get("issues");

                for(int i=0; i<issues.size(); i++){

                    JsonObject issue = (JsonObject) issues.get(i);

                    String issue_key = (String) issue.get("key");

                    JsonObject fields = (JsonObject) issues.get("fields");

                    JsonObject project = (JsonObject) issues.get("project");

                    String project_name = (String) project.get("key");

                    String fields_updated = (String) fields.get("updated");

                    String fields_created = (String) fields.get("created");

                    System.out.println("Value of key" + Integer.toString(i + 1) + " is -> " + issue_key);

                }


查看完整回答
反对 回复 2022-08-03
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

您收到错误,因为您正在将 a 强制转换为 。所以而不是使用JsonPrimitiveJsonObject

JsonObject issues0data = (JsonObject) issues0.get("key");

你应该做的

String issues0data = issues0.get("key").getAsString();
System.out.println("Value of key is -> " + issues0data);

在这里,调用将调用方法。如果基元是,这将小心,并将其转换为 。getAsString()JsonPrimitive.getAsString()boolean/number/stringstring


查看完整回答
反对 回复 2022-08-03
  • 2 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信