如何用内层解析这个json文件?

时间:2018-05-11 06:03:19

标签: java json

JSON:

{  
   "prop":"property",
   "inputInfo":{  
      "sku":"6157068",
      "inputText":"iphone"
   }
}

代码:

JSONObject inputObject = JSON.parseObject(input);
String prop = (String)inputObject.get("property");

但如何获得' sku'的内层? &安培; '的inputText'?

我在Java中使用阿里巴巴json库。

4 个答案:

答案 0 :(得分:2)

我没有使用阿里巴巴库,但是它没有getJSONObject()方法可以在inputObject上使用吗?我以前做过这个,但是我使用了org.json库。

<强> JSON:

    {"circle":{
        "radius":255819.07998349078,
        "center":{
            "lat":00.000000000000000,
            "lng":00.000000000000000
            }
         }
    }

<强>爪哇

    JSONObject shape = new JSONObject(entity.getJsonLocation());

    double latitude = shape.getJSONObject("circle")
                           .getJSONObject("center")
                           .getDouble("lat");

    double longitude = shape.getJSONObject("circle")
                            .getJSONObject("center")
                            .getDouble("lng");

此示例例如获取JSON并创建JSONObject shape。然后,我可以通过调用getJSONObject()上的shape来获取内部json对象。

我希望这可以帮到你。

答案 1 :(得分:0)

您可以先创建一个bean,例如

public class DemoInfo {

private String id;
private String city;

public void setId(String id) {
     this.id = id;
 }
 public String getId() {
     return id;
 }

public void setCity(String city) {
     this.city = city;
 }
 public String getCity() {
     return city;
 }

}

然后,

String s = "{\"id\":\"0375\",\"city\":\"New York\"}";  

DemoInfo info = JSON.parseObject(s, DemoInfo.class); 

或者您可以使用地图。

JSON.parseObject(s, HashMap.class);

答案 2 :(得分:0)

你可以这样做,

JSONObject inputInfoObject = inputObject.getJSONObject("inputInfo");
String sku = inputInfoObject.getString("sku");
String inputText = inputInfoObject.getString("inputText");

答案 3 :(得分:0)

如果您可以使用GSON,则可以使用以下内容

public static void main(String[] args) throws IOException {
    String json = "{\"prop\":\"property\",\"inputInfo\":{\"sku\":\"6157068\",\"inputText\":\"iphone\"}}";

    Gson gson = new Gson();
    HashMap<String, Object> res = gson.fromJson(json, HashMap.class);

    for (Map.Entry<String, Object> entry : res.entrySet()) {

        if ("inputInfo".equalsIgnoreCase(entry.getKey())) {
            HashMap<String, Object> map = gson.fromJson(String.valueOf(entry.getValue()), HashMap.class);

            for (Map.Entry<String, Object> child : map.entrySet()) {
                System.out.println(child.getKey() + " : " + child.getValue());
            }
        }
    }
}

结果是

inputText : iphone
sku : 6157068.0