2016-12-28 17 views
0

MVC 5にMISのダッシュボードを開発しています。このダッシュボードでは、JVectorMapを使用して登録国を読み込みます。だから、次はJSON受け取ったJSON形式からJVectorMap形式にデータを変換する

public JsonResult registeredCountries() 
{    
    var ret = db.View_RegisteredCountries.Select(x => new { Key = x.CountryCode, Value = x.TotalCompanies }).ToDictionary(x => x.Key, x => x.Value).ToList(); 

    return Json(ret, JsonRequestBehavior.AllowGet); 
} 

し、次のように返し、私のコントローラのアクションはJSON

var data = {}; 
$.ajax({ 
    url: 'registeredCountries', 
    type: 'GET', 
    traditional: true, 
    async: false, 
    cache: false, 
    //async: false, 
    dataType: 'json' 
}).done(function(result) { 
    data = result; 
}); 

を得るために、私のJSコードである。しかし、私の問題はJVectorMapは、次の形式

で配列を使用することです
data_array = { 
    "US": 4977, 
    "AU": 4873, 
    "IN": 3671, 
    "BR": 2476, 
    "TR": 1476, 
    "CN": 146, 
    "CA": 134, 
    "BD": 100 
}; 

返されるJSONの形式は次のとおりです。

[{ "Key": "SA", "Value": 4 }] 

上記のJSONを次の形式に変換して、JVectorMapを実装できるようにするにはどうすればよいですか。

data_array = { 
    "SA":4 
} 

答えて

0

入力の配列を歩いて各エントリからオブジェクトを作成するだけです。

// set up some sample data - in your case you already have this. 
 
var data = JSON.parse('[{"Key":"SA","Value":4},{"Key":"US","Value":12},{"Key":"BR","Value":6}]') 
 

 
var obj={} // make a new object to build results. 
 
for (var i =0; i < data.length; i = i + 1) { 
 
    
 
    obj[data[i].Key] = data[i].Value 
 

 
    } 
 

 
// Note jquery only used for this debug output. 
 
$("#output").html(JSON.stringify(obj))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id='output'></div>

関連する問題