2017-09-01 10 views
0

私はmongo DBのREST APIから返信しましたが、JSon Arraysの{"partialObject":false}, {"partialObject":false}という結果が得られました。 コンソール上で、それは以下の正しい出力見せているものの:mongo DBでJson Restレスポンスが正しく表示されない

[{ "_id" : { "Country" : "USA" , "State" : "AK"}}, { "_id" : { "Country" : "USA" , "State" : "HI"}},] 

を私はJakson jarを含めることを試みたが、それは消えていません。

コードは次のとおりです:Mongo DBのコレクションの '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レスポンスで何が問題になっていますか?

答えて

0

あなたにはいくつかのオプションがあります。 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

シリアル化から取らジャクソン

例から文字列

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

使用MixInAnnotations

関連する問題