使用Java中的链接键获取嵌套的JSON值

时间:2018-06-22 17:30:28

标签: java json

我有一个JSON对象,如下所示。在Java中,是否可以使用链接键从一个get调用中获取嵌套值?例如:

String fname = jsonObj.get("shipmentlocation.personName.first")

{
    "shipmentLocation": {
        "personName": {
            "first": “firstName”,
            "generationalSuffix": "string",
            "last": "string",
            "middle": "string",
            "preferredFirst": "string",
            "prefix": "string",
            "professionalSuffixes": [
                "string"
            ]
        }
    },
    "trackingNumber": "string"
}

使用JSONObject类对我来说不起作用,所以我很好奇是否有替代方法可以执行此操作。谢谢!

2 个答案:

答案 0 :(得分:0)

使用您提供的json,您需要经历几个级别。

String firstName = jsonObj.getJSONObject("shipmentLocation").getJSONObject("personName").getString("first");

请注意,如果您在json节点或其子节点中查找的任何字段都可能不存在,则上述内容可能会遇到一些空指针问题。在这种情况下,明智的做法是要么看一下Java Optional,要么在每个步骤都使用null检查,就像这样:

String firstName = null;

JSONObject shipmentLocation = jsonObj.getJSONObject("shipmentLocation");
if (shipmentLocation != null) {
    JSONObject personName = shipmentLocation.getJSONObject("personName");
    if (personName != null) {
        firstName = personName.getString("first");
    }
}

if (firstName != null) {
    // do something with the first name
}

答案 1 :(得分:0)

使用此库-json-simple-1.1.jar(链接-http://www.java2s.com/Code/Jar/j/Downloadjsonsimple11jar.htm

String name = "";

JSONObject jsonObject = (JSONObject) new JSONParser().parse(new FileReader("Path to your file"));
JSONObject jsonObject2 = jsonObject.get("shipmentLocation");
JSONObject jsonObject3 = jsonObject2.get("personName");
name = jsonObject3.get("first").toString();