2016-12-28 22 views
0

Я разрабатываю приборную панель MIS в MVC 5, и на этой приборной панели я хочу использовать 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); 
} 

и после мой JS код, чтобы получить JSON

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

Но моя проблема заключается в том, что 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>

Смежные вопросы