如何基于子节点解析json

时间:2015-10-07 14:24:50

标签: json jackson

{
"serialNumber":
{
    "number":"123443344334",
},
"receivedTime":"10/1/2015 6:06:22 PM",
"sessionId":"123456",
"dataPoint":
    [
        {"storedTime":"2015-10-01T11:45:23.000Z",
        "groupID":"123",
        "groupIndex":1,
        "vtmIndex":0,
        "dataType":"CONDITION",
        "data":
            {
            "conditionType":"TYPEA",
            "timeStamp":"2015-10-01T11:45:23.000Z"
            }
        },
        {"storedTime":"2015-10-01T11:45:23.000Z",
        "groupID":"123",
        "groupIndex":2,
        "vtmIndex":1,
        "dataType":"LOCATION",
        "data":
            {
            "latitude":22.23,
            "longitude":-43.12,
            }
        }
    ]

}

我正在使用杰克逊,并试图弄清楚如何解析这个特殊情况......我的大多数其他工作都是直截了当的,但需要第二眼看这个。

在上面的JSON中,我需要找到其子键" dataType" =" CONDITION",然后返回conditionType数据元素。此处未显示的其他数据元素也具有" CONDITION"的dataType,但不包含conditionType字段。

1 个答案:

答案 0 :(得分:1)

使用该数据结构,看起来除了遍历dataPoint数组之外别无选择,直到找到dataTypeCONDITION 0的对象(除非你是绝对的)知道这个对象总是在某个特定的索引位置 - 比如你的例子中的data。找到该对象后,只需查看它的conditionType属性即可找到其中包含$ip = (get-WmiObject Win32_NetworkAdapterConfiguration|Where {$_.Ipaddress.length -gt 1}).ipaddress.split('.') switch ($ip) { {$ip[2] -eq 0} { $val = 3; } #match anything in 192.168.0.1-255 {$ip[3] -in 1..100} { $val = 1; } {$ip[3] -in 101..200} { $val = 4; } {$ip[3] -in 201..255} { $val = 5; } default { exit } } $val 的嵌套对象。