2016-12-28 1 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 }] 

JVectorMap을 채울 수 있도록 위의 JSON을 다음 형식으로 변환하려면 어떻게해야합니까?

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>