Json Rest响应在mongo数据库中显示不正确
问题描述:
我已经通过mongo数据库中的REST API返回响应,但得到以下结果:JSon数组中的{"partialObject":false}, {"partialObject":false}
。 之下,而在控制台上,它显示正确的输出:Json Rest响应在mongo数据库中显示不正确
[{ "_id" : { "Country" : "USA" , "State" : "AK"}}, { "_id" : { "Country" : "USA" , "State" : "HI"}},]
我曾尝试包括Jakson罐子,但它并没有消失。
代码如下:它应该返回MongoDB中名为'location'的集合中Country的基础上的唯一状态。
public List<DBObject> getState() throws UnknownHostException
{
DB db=ConnectToDB.getConnection();
DBCollection collection = db.getCollection("location");
DBObject match = new BasicDBObject("$match", new BasicDBObject("Country" ,"USA"));
DBObject group = new BasicDBObject("$group", new BasicDBObject("_id", new BasicDBObject("Country" , "$Country").append("State", "$State")));
DBObject project = new BasicDBObject("$project",
new BasicDBObject("Country" , 1)
.append("State" , 1)
.append("_id", 0));
List<DBObject> pipeline = Arrays.asList(match, project,group);
AggregationOutput output = collection.aggregate(pipeline);
List<DBObject> obj1=new ArrayList<DBObject>();
for (DBObject result : output.results())
obj1.add(result);
System.out.println(obj1); //Console output
return obj1; //Service response
}
@Path("/Location")
public class GetProjectLocationResponse
{
@Path("/loc")
@GET
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public List<DBObject> addBuild() throws UnknownHostException, JSONException, JsonProcessingException
{
System.out.println("ïnside Location");
Location loc = new Location();
List<DBObject> basicDBList=(List<DBObject>) loc.getState();
System.out.println("ïnside Location2 ===>"+basicDBList);
return basicDBList;
}
通过Rest API的JSON响应中发生了什么问题?
答
你有几个选项。从Jackson Docs
abstract class MixIn {
@JsonIgnore boolean isPartialObject();
}
public class MyModule extends SimpleModule
{
public MyModule() {
super("ModuleName", new Version(0,0,1,null));
}
@Override
public void setupModule(SetupContext context)
{
context.setMixInAnnotations(DBObject.class, MixIn.class);
}
}
OR
序列化采取串
从杰克逊
使用MixInAnnotations例
public List<String> getState() throws UnknownHostException
{
List<String> obj1=new ArrayList<String>();
for (DBObject result : output.results())
obj1.add(result.toString());
System.out.println(obj1); //Console output
return obj1; //Service response
}
@Path("/Location")
public class GetProjectLocationResponse
{
@Path("/loc")
@GET
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public List<String> addBuild() throws UnknownHostException, JSONException, JsonProcessingException
{
System.out.println("ïnside Location");
Location loc = new Location();
List<String> basicDBList=(List<String>) loc.getState();
System.out.println("ïnside Location2 ===>"+basicDBList);
return basicDBList;
}