繁体   English   中英

从json数据中提取特定字段

[英]Extract specific fields from a json data

我想从此json数据中提取字段“总计”中的字段“ 2008”和“ 2009”。 我试过了,但它显示了空指针异常..我不知道出了什么问题。 以下是我尝试过的代码。

    /*insertion of data*/

        DB preDB = mongo.getDB("database");
            DBCollection coll = preDB.getCollection("agrinindstry");
            BasicDBObject doc1 = new BasicDBObject();
            doc1.put("test", str);
            coll.insert(doc1);
            System.out.println(doc1);


      /***retrieving data***/
            DBCursor cursor = coll.find();

            JSONArray mylist = new JSONArray();
            String result = "";
            while (cursor.hasNext()) 
            {
                result = cursor.next().get("2008").toString();
                mylist.add(result);
                System.out.println(mylist);

            }

这是我的json数据

{"maindata":[
{

"title":"industry",
"2008":37,
"2009":44,
"2010":42


 },
 {

"title":"agriculture",
"2008":4,
"2009":0,
"2010":6

 }
 ],
"total":{
"title:"sum",
"2008":41,
"2009":44,
 "2010":48

 }
}
((DBObject)cursor.next().get("total")).get("2008").toString();

您可以通过将任何JAVA tootkit用于JSON来简化您的任务,请看以下示例

看看这个...

要进一步了解JSON及其解析方法,请检查以下内容:

如果您阅读JSONObject#get(String)的javadoc(实际上是HashMap.get(String)),则会指出

返回:指定键映射到的值;如果此映射不包含该键的映射,则返回null

您的JSON不包含关键时间的映射。

编辑:

考虑一下这个来解析您的JSON数据:

     {"schedule":{"service":{"type":"radio","key":"radio1","title":"BBC Radio 1",...

您需要首先将日程表作为JSONObject获取,然后将服务作为JSONObject获取,然后将title作为常规String值获取。 根据JSON值的类型,不同地应用它。

看到这个链接

尝试这个:

     //get the data from mongoDB which documents has "total" key.

     DBObject dbObject = new BasicDBObject().append("total", new BasicDBObject("$exists", true));
     DBCursor cursor = collection.find(dbObject);

        JSONArray mylist = new JSONArray();
        String result = "";
        while (cursor.hasNext()) 
        {
            result = ((DBObject)cursor.next().get("total")).get("2008").toString();
            mylist.add(result);
            System.out.println(mylist);

        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM