2016-08-08 10 views
-1

ハッシュマップをjson文字列に変換してワイヤで送信したいと考えています。ここでは、コードハッシュマップをJSON文字列に変換する

public static void main(String []args) 
    throws JSONException, JsonParseException, JsonMappingException, IOException { 

    Map<String,String> varMap = new MyMap<String,String>(); 
    varMap.put("VAR","123"); 
    varMap.put("OTHER_VAR","234"); 
    Gson gson = new GsonBuilder().create(); 
    String jsonString = gson.toJson(varMap); 

    JSONObject json = new JSONObject(); 
    json.put("Variable",jsonString); 
    System.out.println("JSON " + json); 
} 

出力は

私は正しいことを行いますが、私が見つけた例はSTRNGにバックスラッシュを含めるいけないと仮定
JSON {"Variable":"{\"VAR\":\"123\",\"OTHER_VAR\":\"234\"}"} 

です。バックスラッシュは二重引用符をエスケープすることを理解しているので、文字列置換メソッドのどれもバックスラッシュを置き換えることはできません。

次のような出力が得られるのですか?

JSON {"Variable":{"VAR":"123","OTHER_VAR":"234"}} 

何らかの形でバックスラッシュを追加しないようにカスタムシリアル化プロパティを使用できますか?

+0

https://kodejava.org/how-do-i-convert-map-into-json/が –

+1

なぜあなたは文字列にマップを変換するだけではなくマップを追加する?これを参照してください。 – azurefrog

+0

JSONの値は文字列であると予想されるので –

答えて

0

これは、あなたが望む結果を与えるはずです。あなたは、JSON文字列をJSONエンコーディングし、その文字列をエスケープするためにそのバックスラッシュを追加しています。

public static void main(String []args) throws JSONException, JsonParseException, JsonMappingException, IOException{ 

    Map<String, Object> top = new HashMap<String, Object>(); 

    Map<String, Object> vars = new HashMap<String, Object>(); 
    vars.put("VAR","123"); 
    vars.put("OTHER_VAR","234"); 

    top.put("Variable", vars); 

    Gson gson = new GsonBuilder().create(); 
    String jsonString = gson.toJson(top); 
    System.out.println("JSON " + json); 
} 
+0

タイプ?プログラムはコンパイルされません –

+0

@user_mdaあなたが正しいです、それらはすべてMap

+0

であるべきです。これは期待される結果を与えますが、私は入力jsonでStringを使用して二重引用符"/"を付けてください。 –

関連する問題