2017-08-02 13 views
0

オブジェクトをJSONにマッピングする際に問題が発生しました。文字列にJSON文字列フィールドを含むJavaマップオブジェクト

は、私はJSONをpropperに変換する必要があるオブジェクトを、持っていますが、私のオブジェクトの文字列フィールドの一部は、JSON形式に既にある:私はObjectMapper使用しています

JSONのマッピングについては
Sdr sdr = new Sdr(); 
sdr.setLocation_area(("location_area")); 
sdr.setEvent_info(("{\"chargeableDur\":0}")); 
sdr.setAgent_info("{\"scp\":\"NAVI\",\"stack\":\"CAP2\"}"); 
sdr.setService_info(("{\"bcap\":\"8090A3\",\"balID\":55969859}")); 
sdr.setStarttime(("starttime")); 

public String toJsonString() { 
    ObjectMapper mapper = new ObjectMapper(); 
    try { 
     return mapper.writeValueAsString(this); 
    } catch (JsonProcessingException e) { 
     logger.error(e.getMessage()); 
    } 
    return toString(); 
} 

しかし、ObjectMapperはすでに正しくJSONが含まれている、文字列をマップするために失敗し、マッピングした後、私は、JSONのこのタイプを取得する:

{ 
    "event_info":""{\"chargeableDur\":0}", 
    "location_area":"location_area", 
    "agent_info":"{\"scp\":\"NAVI\",\"stack\":\"CAP2\"}", 
    "service_info":""{\"bcap\":\"8090A3\",\"balID\":55969859}", 
    "starttime":"starttime" 
} 
私はObjectMapperはそのように私のオブジェクトをマッピングする

{ 
    "event_info":{ 
     "chargeableDur":0 
    }, 
    "location_area":"location_area", 
    "agent_info":{ 
     "scp":"NAVI", 
     "stack":"CAP2" 
    }, 
    "service_info":{ 
     "bcap":"8090A3", 
     "balID":55969859 
    }, 
    "starttime":"starttime" 
} 
+0

文字列をJSON化して、そのままJSONにしますか?どちらがすでにjson'edであるか知る方法はありますか? – Nathan

+0

'mapper.writeValueAsString(this);'あなたのクラスの各属性の 'getX()'メソッドを使ってJSonに入れますか?その場合は、JSon形式を使用していない場合にそれらのメソッドを返すようにそれらのメソッドを再定義するだけです。 – Asew

+0

これらの文字列をバイト配列の実装に変更し、逆シリアル化して文字列に戻す場合 –

答えて

0

は、あなたのJSONの結果を文字列化されているようです。文字列の結果を別のJSONObjectに入れようとします。

return new JSONObject(mapper.writeValueAsString(this)).toString(); 
関連する問題