2017-04-19 7 views
0

APIによる文字列のリターンをjavascriptオブジェクトに変換する最適な方法は何ですか。これは、aspnetコアでのModelState検証の結果です。文字列の定義をjavascriptオブジェクトに変換する

列がIオブジェクト

{ 
    cars: [ 
     {}, 
     {}, 
     { 
     color: "blue" 
    } 
    ] 
} 
+0

かかわらず一定にすることはできません、あなたは単に 'data.cars [経由でアクセスすることはできません2] .color'? 'data'はあなたの関数のパラメータの名前です(' function(data) ')。 – sleeyuen

+0

パスをオブジェクトに変換する必要がありますか?オブジェクトへのjson文字列か?パスの変換にはかなりの前提があります... – BenG

答えて

0

に "車[2] .color" を変換する必要が

この{ "車[2] .color"、 "青"}のようになりAPIを取得するために使用しているフレームワークによっては、一般的に言えば、aspnetのAPIがレスポンスのapplication/jsonとしてコンテンツタイプを設定している場合は、自動的にそれを行うために十分スマートである必要があります。あなたがしようとした場合

var jsonObject = JSON.parse("{ 
    cars: [ 
     {}, 
     {}, 
     {color: "blue"} 
    ] 
    }"); //Returns an object 
0

:あなたはネイティブJSON.parseメソッドを使用することができますJavaScriptでオブジェクトにいくつかのJSONテキストを変換したい場合は、一般的に

$.ajax({ 
    url:'/api/v1/cars', 
    type:'get', 
    dataType: 'json', //Optional, generally speaking 
    success: function(data) { 
     console.log(data); // This will be an object 
    } 
}); 

:たとえば、jqueryのを使用している場合もしアレイにセグメントを変換することができ、選択パスを解析:

function parsePath(string) { 
 
\t var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g 
 
\t 
 
\t var result = [] 
 
\t string.replace(rePropName, function(match, number, quote, string) { 
 
\t \t result.push(quote ? string.replace(/\\(\\)?/g, '$1') : (number || match)); 
 
\t }); 
 
\t 
 
\t return result; 
 
}

それはJSONを返すなら、各セグメントがオブジェクト対の配列であることを意味しているかどうかを判断することは

0

var jsonStr = '{"cars":[{},{},{"color":"blue"}]}'; 
 

 
var jsonObj = JSON.parse(jsonStr); 
 

 
console.log(jsonObj.cars[2]); // Object {color: "blue"}

関連する問題