2016-09-06 4 views
1

以下のjsonオブジェクトをトリミングしたいと思います。それは私がmongoDBが応答したものの上に構築したjsonオブジェクトです。私がしたいのは、冗長な属性であり、Curleyの中カッコを使わずに値(_idまたは$ id)を保持し、単に属性IDを呼び出すだけなので、$ oidを削除することです。 私が必要とするのはちょうど "id"です: "2283cef627ff2cc33ad5990" 私はjsonと苦労しています。Javaを使用するjsonオブジェクトの冗長属性を削除する

{ 
    "_id": { 
     "$oid": "22383cef627ff2cc33ad5990" 
    }, 

    "name": "data1", 

    "users": [ 
    { 
     "$ref": "user", 
     "$id": { 
      "$oid": "16a5fbcee4b0c2c2da3017ef" 
     } 
    }, 
    { 
     "$ref": "user", 
     "$id": { 
      "$oid": "1795ff86e4b09fc66416cd2f" 
     } 
    }, 
], 
}, 

答えて

0

A)あなたはJacksonのように、オブジェクトへのあなたのJSONに変換して、必要な属性を呼び出すためにマッパーを使用することができます。

ObjectMapper mapper = new ObjectMapper(); 
String jsonInString = YOUR_STRING; 

//from String to MyClass 
MyClass object = mapper.readValue(jsonInString, MyClass.class); 

この例では、あなたがすべてとMyClassクラスを定義する必要があります必要な属性(例:_id、名前、ユーザーなど)。

b)より迅速なソリューションを実装する場合は、文字列を直接操作できます。あなたはOIDは常に24個の文字であることを知っている場合は、

String c = str.substring(str.indexOf("\"", str.indexOf("$oid")+6)+1, str.indexOf("\"", str.indexOf("$oid")+6)+25); 

ような何かを行うことができますが、私は非常にジャクソンに見て、それを試してみることをお勧めします。このようなソリューションは非常に壊れやすく、JSONのあらゆる変更は間違った結果につながります。

関連する問題