3
 JSONArray albumarray=new JSONArray();
   JSONObject imgobj=new JSONObject();
    imgobj.put("thumb", filepath.get(i));
    imgobj.put("main", filepath.get(i));
    albumarray.put(imgobj);
    JSONObject albumjson=new JSONObject();
   albumjson.put(albumname,albumarray);

を使用して albumjson を文字列に変換すると

albumjson.toString()

私は以下のように出力を得ています。

{\"test2\":\"[{\\\"thumb\\\":\\\"http:\\\\\\/\\\\\\/dev.mysite.in\\\\\\/mysite\\\\\\/sites\\\\\\/default\\\\\\/files\\\\\\/512da541b31fe.jpg\\\",\\\"main\\\":\\\"http:\\\\\\/\\\\\\/dev.mysite.in\\\\\\/mysite\\\\\\/sites\\\\\\/default\\\\\\/files\\\\\\/512da541b31fe.jpg\\\"}]\"}

私が必要とする正しいフォーマットは

{"test2":[{"thumb":"http://dev.mysite.in/mysite/sites/default/files/512d9bdced1f2.jpg","main":"http://dev.mysite.in/mysite/sites/default/files/512d9bdced1f2.jpg"},{"thumb":"http://dev.mysite.in/mysite/sites/default/files/512d9be134cb8.jpg","main":"http://dev.mysite.in/mysite/sites/default/files/512d9be134cb8.jpg"}]}

追加のスラッシュを置き換える方法。

4

2 に答える 2

2

JSONObject.getString('keyName')代わりにメソッドを使用してくださいtoString()

編集:

最初に、これらの余分な\\ものが表示される理由を理解する必要があります。これは のエスケープ文字です"。したがって、非常に必要であり、JSON エンコーディングの一部です。したがって、必要なときは常に上記のメソッドを使用してキーの値を取得する必要があります。 .

それとは別に、試すことができます:

JSONObject.toString(4)whereは実際にスペースをインデントして、それが役立つかどうかを確認します。それ以外の場合は、余分な4ものを置き換える以外に選択肢はありません\\

myJsonString.replaceAll("\\","");

また

 myJsonString=myJsonString.replaceAll("\\\\",""); 

2番目の編集:

送信している文字列は、任意のサーバーに送信するのに最適ですdecode。サーバー側でその文字列を JSON にしてから利用する必要があります。

.NET を使用している場合は、これが表示されます。または、他のプラットフォームを使用している場合は、そのプラットフォームで JSON にデコードする方法を見つける必要があります。

于 2013-02-27T07:18:46.363 に答える
-1

ここでは次の 2 つのことが行われています。

  1. あなたのツールはあなたを混乱させます。出力が表示される場合:

    "{\"test2\":\"[{\\\"thumb\\\":\\\"http:\\\\\\/\\\\\\/dev.lrcdn.in\\\\\\/shiaspark\\\\\\/sites\\\\\\/default\\\\\\/files\\\\\\/512da541b31fe.jpg\\\",\\\"main\\\":\\\"http:\\\\\\/\\\\\\/dev.lrcdn.in\\\\\\/shiaspark\\\\\\/sites\\\\\\/default\\\\\\/files\\\\\\/512da541b31fe.jpg\\\"}]\"}"
    

    結果が以下を含む文字列であることを示しています。

    {"test2":"[{\"thumb\":\"http:\\\/\\\/dev.lrcdn.in\\\/shiaspark\\\/sites\\\/default\\\/files\\\/512da541b31fe.jpg\",\"main\":\"http:\\\/\\\/dev.lrcdn.in\\\/shiaspark\\\/sites\\\/default\\\/files\\\/512da541b31fe.jpg\"}]"}
    
  2. その文字列を取得してフォーマットします。

    {"test2":
     "[{\"thumb\":\"http:\\\/\\\/dev.lrcdn.in\\\/shiaspark\\\/sites\\\/default\\\/files\\\/512da541b31fe.jpg\",\"main\":\"http:\\\/\\\/dev.lrcdn.in\\\/shiaspark\\\/sites\\\/default\\\/files\\\/512da541b31fe.jpg\"}]"
    }
    

    ネストされた jsonobject ではなく、json でエンコードされた文字列を含む json オブジェクトを作成したことがわかります。何らかの理由で、コードには次のような効果があります。

    JSONArray albumarray=new JSONArray();
    JSONObject imgobj=new JSONObject();
    imgobj.put("thumb", filepath.get(i));
    imgobj.put("main", filepath.get(i));
    albumarray.put(imgobj);
    
    JSONObject albumjson = new JSONObject();
    albumjson.put(albumname, albumarray.toString());
    

    それはあなたのjsonライブラリのバグのように聞こえます

于 2013-02-27T08:24:17.470 に答える