【问题标题】:how to convert jsonNode to BasicDbList如何将 jsonNode 转换为 BasicDbList
【发布时间】:2015-04-22 09:27:47
【问题描述】:

我有一个 JsonNode 对象,我需要将其转换为 mongoDb 的 BasicDBList。我怎么做?我需要将JsonNode 作为我进一步迭代的列表。这是我的JsonNode:

JsonNode rnode={"question":"q0009_d2","answers[{"answers":"\"Good\""}],"ranking":"false","other":""} 

这是我转换它的尝试:

BasicDBList newlist=new BasicDBList();
newlist.add(rnode);

但是newlist 是空的:

o/p: newlist is `[ [ [ ] , [ [ [ ]]] , [ ] , [ ]]]`

如何进行转换?

【问题讨论】:

  • 我对 JsonNode 不熟悉。但首先看看你的问题,我发现 - answers 和 rnode 中的语法错误 rnode 和 rnode 听起来像一个文档,为什么直接转换为 BasicDBList 而不是 BasicDBObject
  • 谢谢..我有一个想法。是的,我首先将我的节点转换为 DBObject,然后将其附加到我的 DBList 中。然后我为我的迭代获取列表的元素。所以它工作正常。

标签: java json mongodb


【解决方案1】:

我没有在JsonNode 上工作更多,但遵循简单的 java 代码会对您有所帮助。

import java.net.UnknownHostException;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.mongodb.util.JSON;

和java代码如下

try {
    Mongo mongo = new Mongo("localhost", 27017);
    DB db = mongo.getDB("yourdb");
    DBCollection collection = db.getCollection("dummyColl");

    // convert JSON to DBObject directly
    DBObject dbObject = (DBObject) JSON
        .parse("{'name':'abc', 'age':12}");

    collection.insert(dbObject);

    DBCursor cursorDoc = collection.find();
} catch (UnknownHostException e) {
    e.printStackTrace();
} catch (MongoException e) {
    e.printStackTrace();
}

在上面的代码中com.mongodb.util.JSON;将给定的字符串解析为JSON并转换为DBObject,然后插入到集合中

【讨论】:

    【解决方案2】:

    假设你有一个这样的 json 节点数组,下面的代码示例可能会对你有所帮助,否则将对象转换为列表是没有意义的

    JsonNode root = rnode; //yourJsonNode
    Iterator<JsonNode> iter = root.getElements();
      while ( iter.hasNext() ){
    //create basicDB objects
    // add them to basicDBList
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      • 1970-01-01
      • 2013-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      相关资源
      最近更新 更多