简体   繁体   English

JSON字符串未解析字符串的标头部分

[英]JSON string not parsing header part of the string

Json string : 杰森字符串:

{
    "event": {
        "event_name": "Customer Phone Number",
        "operation_type": "Add",
        "transaction_identifier": "1234567890",
        "event_publication_timestamp_millis": "1518464452915",
        "event_publisher": "CIS",
        "event_publisher_identity": "System",
        "event_timestamp_millis": "NONE",
        "event_initiator": "NONE",
        "event_initiator_identity": "NONE"
    },
    "contents": [
        {
            "data_group_name": "customer_identifier",
            "data_fields": [
                {
                    "data_field_name": "company_number",
                    "data_field_type": "string",
                    "data_field_value": "069"
                },
                {
                    "data_field_name": "customer_short_name",
                    "data_field_type": "string",
                    "data_field_value": "marshben"
                },
                {
                    "data_field_name": "tie_breaker",
                    "data_field_type": "string",
                    "data_field_value": "01"
                }
            ]
        },
        {
            "data_group_name": "customer_phone_number",
            "data_fields": [
                {
                    "data_field_name": "phone_number",
                    "data_field_type": "string",
                    "data_field_value": "555-1212"
                },
                {
                    "data_field_name": "phone_type",
                    "data_field_type": "string",
                    "data_field_value": "cell"
                },
                {
                    "data_field_name": "primary_indicator",
                    "data_field_type": "string",
                    "data_field_value": "yes"
                }
            ]
        }

    ]
}

JSONObject rootObject = new JSONObject(result);

        System.out.println("this");

        System.out.println(rootObject.toString());

The above code only gives contents part of it, how to get the top level data which starts with event. 上面的代码仅提供了部分内容,以及如何获取以事件开头的顶级数据。

Here is the output of :

    "contents": [
        {
            "data_group_name": "customer_identifier",
            "data_fields": [
                {
                    "data_field_name": "company_number",
                    "data_field_type": "string",
                    "data_field_value": "069"
                },
                {
                    "data_field_name": "customer_short_name",
                    "data_field_type": "string",
                    "data_field_value": "marshben"
                },
                {
                    "data_field_name": "tie_breaker",
                    "data_field_type": "string",
                    "data_field_value": "01"
                }
            ]
        },
        {
            "data_group_name": "customer_phone_number",
            "data_fields": [
                {
                    "data_field_name": "phone_number",
                    "data_field_type": "string",
                    "data_field_value": "555-1212"
                },
                {
                    "data_field_name": "phone_type",
                    "data_field_type": "string",
                    "data_field_value": "cell"
                },
                {
                    "data_field_name": "primary_indicator",
                    "data_field_type": "string",
                    "data_field_value": "yes"
                }
            ]
        }

    ]
}

I would like to parse every element and read the values. 我想解析每个元素并读取值。 But the json object is parsing only part of the string. 但是json对象仅解析字符串的一部分。 what is the bestway to process this string. 处理此字符串的最佳方法是什么? The top level part which starts with event is very important. 从事件开始的顶层部分非常重要。

For the example, you shared I can see all the elements are in the rootObject variable. 对于示例,您共享了我可以看到所有元素都在rootObject变量中。 It's just that the ordering has changed. 只是顺序已更改。

Your Input JSON had a structure like this 您的输入JSON具有这样的结构

{
 "event": {..},
 "contents": [..]
} 

And when creating and outputing the JSON object it becomes something like this: 在创建和输出JSON对象时,它会变成这样:

{
 "contents": [..],
 "event": {..}
} 

Meaning all fields are in the JSONObject but only the order has changed and this is expected as it is not necessary to maintain the order of fields as per the JSON spec. 意味着所有字段都在JSONObject中,但只有顺序已更改,这是可以预期的,因为不必按照JSON规范维护字段的顺序。 You could verify that the fields are indeed present by parsing by field name. 您可以通过按字段名称解析来验证字段确实存在。 For the above example: 对于以上示例:

System.out.println(rootObject.get("event").toString());

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM