Java本地JSON解析API

4

我将要处理以下JSON结构:

{
  "name": "product new",
  "brand": {
    "id": 1
  },
  "category": {
    "id": 1
  }
}

我可以提取
jsonObject = Json.createReader(httpServletRequest.getInputStream()).readObject();
jsonObject.getString("name")

错误:

jsonObject.getInt("brand.id")
jsonObject.getInt("category.id")

我正在使用Java API处理JSON。

编辑 如果我访问

System.out.println(jsonObject.get("brand"));
// response {"id":1}

System.out.println(jsonObject.get("brand.id"));
// null

http://www.oracle.com/technetwork/articles/java/json-1973242.html


jsonObject.getInt("brand.id") 不是错误。您实际的错误信息是什么? - shmosel
它返回为空。 - user2727195
你在文档中看到了什么来支持你的语法?为什么不使用getJsonObject("brand").getInt("id") - shmosel
好的,运行成功了,请查看我的修改以防万一。 - user2727195
在什么情况下? - shmosel
有没有办法使brand.id起作用,否则您可以将您的解决方案发布为答案。 - user2727195
1个回答

4

我认为你正在使用的API不支持嵌套表达式。你需要访问父对象,然后再访问特定字段:

System.out.println(jsonObject.getJsonObject("brand").getInt("id"));

或者您可以使用接受路径表达式的API,例如Jackson

JsonNode node = new ObjectMapper().readTree(httpServletRequest.getInputStream());
System.out.println(node.at("/brand/id").asInt());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接