首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jackson分析专用阵列

Jackson分析专用阵列
EN

Stack Overflow用户
提问于 2013-01-18 02:34:02
回答 1查看 3.1K关注 0票数 2

我正在使用Jackson来解析api结果,这似乎很好。

Java:

代码语言:javascript
运行
复制
public static void jsonIn(String st){
         try {
        JsonFactory jfactory = new JsonFactory();
        /*** read from URL ***/
        JsonParser jParser = jfactory.createJsonParser(new URL(st));
        // loop until token equal to "}"
        while (jParser.nextToken() != JsonToken.END_ARRAY) {
            String fieldname = jParser.getCurrentName();
            if ("id".equals(fieldname)) {
              // current token is "id",
                      // move to next, which is "id"'s value
            try{
              jParser.nextToken();
                }
            catch (Exception e){

            }
              System.out.println(jParser.getText()); // display id
            }
          }
          jParser.close();
         } catch (JsonGenerationException e) {
          e.printStackTrace();
         } 

      }

问题:

但是-我想要的结果(字段:"id")在数组"items“中。上面的代码从第一个数组“查询”开始,只发送给我一个名为"id“的元素,我不关心这个元素。然后,它将停止基于while语句的解析,而不会到达"items“数组。如何更改上面的代码以跳过我感兴趣的数组"items“,以便获得我想要的"id”字段?

json:

代码语言:javascript
运行
复制
{
 "app": "Sale",
 "avail": {
  "type": "application/json",
},
 "queries": {
  "unAvailURIs": [
   {
    "id": "1sdf6gf3jf80dhb3",
    "results": "57",
    "searchTerms": "lycos.com",
    "startIndex": 11
   }
  ],
  "apiSource": [
   {
    "title": "go****y",
    "totalResults": "579000",
    "auctionPhrase": "lycos.com",
    "count": 10,
    "startIndex": 1,
    "id": "in",
   }
  ]
 },
 "pullAPI": {
  "search": "lycos.com"
 },
 "searchInformation": {
  "searchTime": 0.025345,
  "totalResults": "57600100",
 },
 "items": [
  {
   "id": "GD172993",
   "title": "lycos.com",
   ....
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-18 04:03:44

我好像错过了我要找的那个帖子:Parsing JSON Bing results with Jackson。感谢@fge解释ObjectMapperreadTree()

我只是简单地替换了try语句的开头,如下所示:

代码语言:javascript
运行
复制
try {    
    JsonFactory jfactory = new JsonFactory();
    JsonParser jParser = jfactory.createJsonParser(new URL(st));
    ObjectMapper mapper = new ObjectMapper();
    JsonNode input = mapper.readTree(jParser);
    final JsonNode results = input.get("items");
    // loop until token equal to "}"
    for (final JsonNode element: results) {
        JsonNode fieldname = element.get("id");
        System.out.println(fieldname.toString());
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14391568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档