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

维卡斯J:

我有JSON数据,想提取Java中仅特定字段的数据并将其存储在String中。例如,
来自问题,密钥:651,来自项目名称:test,已更新,已创建创建阵列所有记录的详细信息。

样本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)

JsonObject object = (JsonObject) new JsonParser().parse(new FileReader("C:\\MyData\\response.json"));
                JsonArray issues = (JsonArray) object.get("issues");
                JsonObject issues0 = (JsonObject) issues.get(0);
                JsonObject issues0data = (JsonObject) issues0.get("key");
                String issue_key = issues0data.get("issue_key").getAsString();
                System.out.println("Value of key is -> " + issue_key);  // java.lang.ClassCastException: com.google.gson.JsonPrimitive cannot be cast to com.google.gson.JsonObject

更新的代码

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



                for(int i=0; i<issues_data.size(); i++)  
                {
                JsonObject issues = (JsonObject) issues_data.get(i); 
                String issues_key = (String) issues.get("key").toString();
                String project_name = (String) issues.get("name").toString();  // returns null 

               }
阿巴斯·德汉(Abbas Dehghan):

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

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);
                }

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从文本文件中提取特定行并将其读入数组?(Java)

从json字符串中提取对象数组,并将其放入ArrayList中?

如何使用OpenSSL从.cer中提取RSA公钥并将其存储在.pem中?

如何使用jquery从json数组中提取数据并将其附加到html表中?

想要从耳朵文件中提取特定的jar文件并将其存储在特定目录中

如何在float中提取小数点后的数字并将其存储在char Array中

如何从数据框中提取对角线元素并将其存储在变量中?

如何从json数组中提取字符串值并将其存储

如何选择特定的json数据并将其存储到Vue Js中的数组中?

从pandas列中提取特定值并将其存储在新列中

在文件中提取字段并将其存储在vim中的其他文件中

BASH-如何从CSV文件中的列中提取数据并将其放入数组中?

从文本中提取IP地址并将其存储在变量中

从参数值中提取图像并将其存储在变量中

如何从相对布局中提取文本并将其存储在ArrayList中

如何从文件中提取多个数据并将其存储在csv文件中?

使用GREP从文件中提取文本并将其存储在数组中的Bash语法

rsyslog:如何从元数据中提取值并将其存储在变量中?

如何从存储在php文件中的数组中提取元素并将其显示为HTML页面上的文本?

如何从 bigquery 中的 JSON 字段存储中提取数据

如何从对象数组中提取特定数据并将其发布到 firebase

Python:如何从数组中提取值的第一个实例并将其存储在列表中?

如何从json数组中提取数据并将其放入数据gridview c#

如何从文本文件中提取子集并将其存储在单独的文件中?

如何从 WMI 对象中提取值并将其存储在变量中?

C#:从集合中提取数据并将其存储在数组中

如何从 json 对象中提取特定字段并将其存储在 node.js 中的字符串中

如何在数组中提取一个值并将其余值留在 Laravel 中

JMeter:从 JSON 响应中提取多个值并将其存储在变量中(逗号分隔)