FastJSON解析取值问题

{
    "other":{
        "refresh":"A",
        "miss":"57"
    },
    "list":[
        {
            "addata":null,
            "category":"推荐",
            "channel":null,
            "digest":"图/视觉中国看过这些拜年送礼的故事后,让我们来思考一个问题—",
            "docid":"DATVKNV105148UNS",
            "imgsrc3gtype":1,
            "link":"https://3g.163.com/all/article/DATVKNV105148UNS.html",
            "liveInfo":null,
            "picInfo":Array[1],
            "ptime":"2018-02-18 10:18:03",
            "source":"每日人物",
            "tag":"",
            "tcount":1,
            "title":"过年送什么?河南流行健脑饮品 东北山寨年货成灾",
            "type":"doc",
            "typeid":"",
            "unlikeReason":null,
            "videoInfo":null
        },
        {
            "addata":null,
            "category":"新闻",
            "channel":null,
            "digest":"在辞旧迎新之际,红色文艺轻骑队送欢乐,下基层。他们不仅走进了",
            "docid":"DATV8IJ20001875N",
            "imgsrc3gtype":1,
            "link":"https://3g.163.com/all/article/DATV8IJ20001875N.html",
            "liveInfo":null,
            "picInfo":[
                {
                    "height":null,
                    "ref":null,
                    "url":"http://cms-bucket.nosdn.127.net/449c04e919fc484f89ce8eaebdc8124320180218101111.png",
                    "width":null
                }
            ],
            "ptime":"2018-02-18 10:11:22",
            "source":"央视军事",
            "tag":"",
            "tcount":36,
            "title":"消防部队联欢时突接火警 战士撂下吉他1分钟内出警",
            "type":"doc",
            "typeid":"",
            "unlikeReason":null,
            "videoInfo":null
        },
        Object{...},
        Object{...}
    ],
    "code":200
}

请问使用FastJSON如何用最少的代码取出list里面的link与title的值
急用,在线等。感激不尽

阅读 4k
4 个回答

评论里 @大叔一枝花 说我没有测试,那么这里放一下截图:

clipboard.png

另外,题目里的 JSON 里有 Array[1]Object{...} 这样的东西,可能是直接从控制台复制出来的吧?
我手动删掉这两处了,因为这是任何 JSON 解析器都会报错的东西。

原答案:

JSONObject.parseObject(json)
    .getJSONArray("list")
    .forEach(obj -> {
        Stream.of("link", "title")
            .map(((JSONObject) obj)::getString)
            .forEach(System.out::println);
    });

如果你可以用 Java 8 的话。

建议把json字符串转化为对象,从对象里面取值,这样代码也不多,而且也方便

新手上路,请多包涵

在 java bean 里面将不需要序列化的属性加上 transient 修饰符试试

题者可以使用 http://www.jsonschema2pojo.org/ 把JSON,转换为 JAVA对象,
然后直接使用JSON.parse(jsonStr,YourObj.class)。
遇到比较复杂的解析我都是这样操作

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题