9

現在、アプリケーションのサーバー側から JSON オブジェクトを受信して​​います。結果は次のとおりです。

{"tags":"[{value: 2,label: 'Dubstep'},{value: 3,label: 'BoysIIMen'},{value: 4,label:'Sylenth1'}]"}

しかし、結果に「タグ」と二重引用符は必要ありません。

だから私が欲しいのは、そのJSONオブジェクトの配列表現です

したがって、これをどのように変換しますか

{"tags":"[{value: 2,label: 'Dubstep'},{value: 3,label: 'BoysIIMen'},{value: 4,label:'Sylenth1'}]"}

これに

[{value: 2,label: 'Dubstep'},{value: 3,label: 'BoysIIMen'},{value: 4,label:'Sylenth1'}]

配列を作成するループは次のとおりです

String k = "["; 
        List<Tag> tg = audioTaggingService.findTagsByName(q);
        for(int i = 0; i<audioTaggingService.findTagsByName(q).size();i++){
            Tag t = tg.get(i);
            if(i == (tg.size() - 1)){
                k+="{value: "+t.getId()+",label:'"+t.getName()+"'}";
            }else{
                k+="{value: "+t.getId()+",label:'"+t.getName()+"'}";
            }
        }
        k+="]";

上記のコードの結果はこれです

[{value: 2,label: 'Dubstep'},{value: 3,label: 'BoysIIMen'},{value: 4,label:'Sylenth1'}]
4

2 に答える 2

10

呼び出された JavaScript オブジェクトでサーバー側の応答を取得したと仮定すると、関数を使用して文字列プロパティをresponse解析できます。ただし、最初にサーバー側のコードを修正して、tags プロパティの有効な JSON 文字列を返す必要があります (JSON プロパティ名は引用符で囲む必要があります)。tags$.parseJSON

// This came from the server
var response = {"tags":"[{\"value\": 2,\"label\": \"Dubstep\"},{\"value\": 3,\"label\": \"BoysIIMen\"},{\"value\": 4,\"label\":\"Sylenth1\"}]"};

// Now you could parse the tags string property into a corresponding
// javascript array:
var tags = $.parseJSON(response.tags);

// and at this stage the tags object will contain the desired array
// and you could access individual elements from it:
alert(tags[0].label);

何らかの理由で、サーバー側スクリプトを変更してtagsプロパティに有効な JSON を提供できない場合でも、eval代わりに使用でき$.parseJSONます。

var tags = eval(response.tags);

evalこれは推奨される方法ではありません。任意の JavaScript が実行されるため、通常は使用を避ける必要があります。

于 2013-01-30T10:19:02.997 に答える