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; 
    }