有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用com从java中的json数组解析json对象。fasterxml。杰克逊。数据绑定。JsonNode;

我试图解析一些json,它是数组中的一组对象。我对java不太流利,很难弄明白如何做到这一点

    ObjectMapper mapper = new ObjectMapper();
    mapper.setSerializationInclusion(Include.NON_NULL);
    JsonNode messageNode = mapper.readTree(post);

    if (!messageNode.isArray()){
        try {
            throw new Exception("INVALID JSON");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

  ArrayList<String> listObjects = null;
  JsonParser parser = mapper.getFactory().createParser(post);

json格式:

  {
  "data": [
   {
     "id": "897569693587466_897626706915098",
     "from": {
        "id": "1809583315",
        "name": "Lena Cann Jordan"
     },
     "message": "Amen.",
     "can_remove": false,
     "created_time": "2014-11-11T22:41:11+0000",
     "like_count": 0,
     "user_likes": false
    },
    {
     "id": "897569693587466_897627376915031",
     "from": {
        "id": "1776031725",
        "name": "Kyla Munford"
     },
     "message": "Tell me what my God can't do!!!",
     "can_remove": false,
     "created_time": "2014-11-11T22:42:51+0000",
     "like_count": 0,
     "user_likes": false
  },
  {
     "id": "897569693587466_897631636914605",
     "from": {
        "id": "100000106496788",
        "name": "Sarah Barklow Tyson"
     },
     "message": "That's bc God is awesome!! He can give or take away!! \ud83d\ude4f\u2795",
     "can_remove": false,
     "created_time": "2014-11-11T22:49:46+0000",
     "like_count": 0,
     "user_likes": false
  }
  ],
  "paging": {
    "cursors": {
     "after": "WTI5dGJXVnVkRjlqZFhKemIzSTZPRGszTmpVMk1USXdNalExTkRrd09qRTBNVFUzTkRrNU5qTTZOREE9",
     "before": "WTI5dGJXVnVkRjlqZFhKemIzSTZPRGszTmpJMk56QTJPVEUxTURrNE9qRTBNVFUzTkRVMk56RTZNelU9"
  },
  "previous": "some link"
 }
 }

这是来自facebook graph api的json。我还需要提取下面的游标和链接,这样它们也会显示为对象之一

谢谢你的建议

谢谢


共 (1) 个答案

  1. # 1 楼答案

    我认为真正的问题是你想要实现什么?您已经在将JSON解析为树模型(JsonNode),从那时起,您可以使用方法getpathat(使用JSON指针表达式)自由地遍历内容

    或者,如上面Samwise所建议的,可以考虑用JSON结构与Java结构相同的java类,这样您就可以更容易地访问数据作为常规java对象。如果是这样,您只需通过以下方式解析它:

    Graph graph = mapper.readValue(post);
    Data d = graph.getData().get(0); // for first entry in "data" List