Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将json文本文件解析为BasicDBobject_Java_Json_Mongodb_Junit - Fatal编程技术网

Java 如何将json文本文件解析为BasicDBobject

Java 如何将json文本文件解析为BasicDBobject,java,json,mongodb,junit,Java,Json,Mongodb,Junit,我想在mongodb中将这个json解析为CollectionAttribute { "properties":[{ "attributeId":"123", "value":"345" }, { "attributeId":"2345", "value":"567" }] } 但是我有一个错误。你能帮我吗我是jav

我想在mongodb中将这个json解析为CollectionAttribute

{
"properties":[{
"attributeId":"123",
"value":"345"
},
{
"attributeId":"2345",
"value":"567"
}]
}

但是我有一个错误。你能帮我吗我是java初学者,如果有任何帮助,我们将不胜感激。

你可以使用Google的
Gson
库解析文件中的JSON,如下所示。解析后的对象可以映射到
java.util.Map
,从中可以构建
BasicDBObject

BasicDBObject DBObject = new BasicDBObject();
DBObject.parse(GetCatalogCollectionResponse.json);
BufferedReader=newbufferedreader(newfilereader(“test_file.json”);
Gson Gson=新的Gson();
Map Map=gson.fromJson(reader,Map.class);
系统输出打印项次(map);
//{properties=[{attributeId=123,value=345},{attributeId=2345,value=567}]}
BasicDBObject obj=新的BasicDBObject(地图);
System.out.println(obj.toJson());
//{“属性”:[{“属性ID”:“123”,“值”:“345”},{“属性ID”:“2345”,“值”:“567”}]}

我终于找到了问题的答案

BufferedReader reader = new BufferedReader(new FileReader("test_file.json"));
Gson gson = new Gson();
Map<String, Object> map = gson.fromJson(reader, Map.class);
System.out.println(map);
// {properties=[{attributeId=123, value=345}, {attributeId=2345, value=567}]}

BasicDBObject obj = new BasicDBObject(map);
System.out.println(obj.toJson());
// {"properties": [{"attributeId": "123", "value": "345"}, {"attributeId": "2345", "value": "567"}]}
在这里,我们可以像下面这样以字符串格式传递json文件

public class BasicDBObjectInput {

  public static String getInput(String resourceName) throws IOException {
    ClassLoader classLoader = BasicDBObjectInput.class.getClassLoader();
    File file = new File(classLoader.getResource(resourceName).getFile());
    String json = FileUtils.readFileToString(file, Charset.defaultCharset());

    return json;
  }

}

希望它能帮助一些人。

方法
DBObject.parse
用于解析JSON字符串。您好,谢谢。JSON文件存储在ecllipse中的src/test/resources下,我在src/java/test文件夹中尝试了这一行。BufferedReader reader=new BufferedReader(new FileReader(“src/test/resources/test\u file.JSON”))。它显示FileNotFoundException异常。我如何通过此测试\u file.json..请更正我是java初学者我在谷歌上搜索了这个搜索字符串:“如何在java中访问resources文件夹中的文件”,并找到了很多答案。我相信你会发现一些有用的东西满足你的需要。另外,请参阅这篇有用的帖子:。谢谢。我找到了一个关于如何访问资源文件夹中文件的答案。
public class BasicDBObjectInput {

  public static String getInput(String resourceName) throws IOException {
    ClassLoader classLoader = BasicDBObjectInput.class.getClassLoader();
    File file = new File(classLoader.getResource(resourceName).getFile());
    String json = FileUtils.readFileToString(file, Charset.defaultCharset());

    return json;
  }

}
String json = `BasicDBObjectInput.getInput("GetCatalogCollectionAttributeResponse.json"); BasicDBObject collectionAttributes = BasicDBObject.parse(json);`