Jsonデータを["1","2","3"]
(文字列のリスト)として送信するレストサービスがありますが、これはFirefoxレストクライアントプラグインで正常に機能していますが、アプリケーションでデータを送信している間、構造が{"0":"1","1":"2","2":"3"}
フォーマットされており、データを渡すことができません、アプリケーションを介してデータを送信できるように変換する方法{"0":"1","1":"2","2":"3"}
、["1","2","3"]
どんな助けでも大歓迎です。
2 に答える
json を解析して javascript オブジェクトに戻す必要があります。他の寄稿者の 1 人がすでに指摘しているように、dojo の後の反復には解析ツールがありますが、ほとんどのブラウザJSON.parse()
は、ECMA-262 第 5 版 (JS が基づいている仕様) で定義されている をサポートしています。その使用法は次のとおりです。
var str = your_incoming_json_string,
// here is the line ...
obj = JSON.parse(string);
// DEBUG: pump it out to console to see what it looks like
a.forEach(function(entry) {
console.log(entry);
});
サポートしていないブラウザーの場合JSON.parse()
は、json2.js を使用して実装できますが、実際には dojo を使用しているため、それdojo.fromJson()
があなたの方法です。Dojo はブラウザーの非依存性を処理します。
var str = your_incoming_json_string,
// here is the line ...
obj = dojo.fromJson(str);
// DEBUG: pump it out to console to see what it looks like
a.forEach(function(entry) {
console.log(entry);
});
AMD バージョンの Dojo を使用している場合は、Dojo のドキュメントに戻り、dojo.fromJsonページの dojo/_base/json の例を確認する必要があります。
json の形式が である場合は{ "index" : "value" }
、{"0":"1","1":"2","2":"3"}
その情報を利用して次のことができます。
var myObj = {"0":"1","1":"2","2":"3"};
var convertToList = function(object) {
var i = 0;
var list = [];
while(object.hasOwnProperty(i)) { // check if value exists for index i
list.push(object[i]); // add value into list
i++; // increment index
}
return list;
};
var result = convertToList(myObj); // result: ["1", "2", "3"]
フィドルを参照してください: http://jsfiddle.net/amyamy86/NzudC/
リストを「反復」するには、偽のインデックスを使用します。インデックスにブレークがある場合、これは機能しないことに注意してください。これはできません。{"0":"1","2":"3"}