2016-08-21 6 views
0

нужно преобразовать в словарь JSON массив объектов с ключом «ид» и значение «оценка» свойства, как следующиеПреобразовать JSON массив объектов с заданными свойствами в словарь

[{"score":0.6990418,"id":"4833909335"}, 
{"score":0.8079009,"id":"4833874639"}, 
{"score":0.8079009,"id":"4834247506"}]. 

Словарь ключей должны иметь значения Свойство «id» и значения словаря shoud будут скопированы из «score».

Обратите внимание, что это не десериализации, но преобразование/отображение, когда некоторая информация не копируется в целевой объекте (например, имена свойств и потенциально другие свойства)

Я нашел подобный вопрос How to deserialize the json array of objects to dictionary, что было неправильно закрыт в два экземплярах различного вопроса об десериализации различного объекта JSON с несколькими свойствами. Я пытался открыть его, но безуспешно.

ответ

0

Я создал методы расширения, чтобы извлекать пару свойств из элементов массива JSON

public static Dictionary< string, string> JsonArrayToDictionary(string strJson, string keyName,string valueName) 
     { 
      var array = JArray.Parse(strJson) ; 
      var dictionary = JsonArrayToDictionary(array, keyName, valueName); 
      return dictionary; 
     } 

     public static Dictionary<string , string > JsonArrayToDictionary(this JArray array, string keyName, string valueName) 
     { 
      if (array != null) 
      { 
       var dict = array.ToDictionary(x => x[keyName].ToString(), x => x[valueName].ToString()); 
       return dict; 
      } 
      return null; 
     } 


[TestClass()] 
    public class JsonHelperExtensionsTests 
    { 
     [ TestMethod()] 
     public void JsonArrayToDictionaryTest() 
     { 
      var jsonArray= @"[{""score "":0.6990418,"" id"": ""ID1"" },{""score "":0.8079009,"" id"": ""ID2"" }]"; 
      var dict= JsonHelperExtensions.JsonArrayToDictionary(jsonArray, "id" , "score"); 
      dict.Count.Should().Be(2); 
      dict[ "ID1"].Should().Be("0.6990418"); 
     } 
    } 
Смежные вопросы