Как преобразовать строку в список словаря - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть строка из http response

data = "[{'value':123,'Type':'Range'},{'value':456,'Type':'Fixed'}]"

, как я могу преобразовать ее в список dict в c#

Ответы [ 3 ]

4 голосов
/ 26 февраля 2020

Там не должно быть никаких проблем.

С десериализацией до List<customObject> или List<Dictionary<string,string>>
с использованием Json. net library.

public class Data{
    public string value{get;set;}
    public string Type{get;set;}
}

var testClass = JsonConvert.DeserializeObject<List<Data>>(input);   

Дамп объекта:

Dumping object(System.Collections.Generic.List`1[Data])  
[  
   {  
       Type   : Range  
       value  : 123  
   },  
   {  
       Type   : Fixed  
       value  : 456  
   }  
]

Или напрямую:

var testDict = JsonConvert.DeserializeObject<List<Dictionary<string,string>>>(input);   

Результат:

Dumping object(  
  System.Collections.Generic.List`1[System.Collections.Generic.Dictionary`2[String,String]])  
[  
   {  
    [  
           [value, 123]  
           ,  
           [Type, Range]  
    ]   },  
       {  
    [  
           [value, 456]  
           ,  
           [Type, Fixed]  
    ]     
   }  
]  

Не забудь using Newtonsoft.Json;

LiveDemo

1 голос
/ 26 февраля 2020

Лучший способ - использовать простой список объектов: сначала создайте класс, как показано ниже

     public class respObject
     {
       public int Value { get; set; }
       public string  Type { get; set; }
     }

, затем DeserializeObject, используя Newtonsoft. Json как

        var data = "[{'value':123,'Type':'Range'},{'value':456,'Type':'Fixed'}]";

        var objList = JsonConvert.DeserializeObject<List<respObject>>(data);

Но ответьте на ваш Список вопросов по dict

         var data = "[{'value':123,'Type':'Range'},{'value':456,'Type':'Fixed'}]";

         var listDict = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(data);
0 голосов
/ 26 февраля 2020

Вы можете попробовать с JArray

var data = "[{'value':123,'Type':'Range'},{'value':456,'Type':'Fixed'}]";
var dict = JArray.Parse(data)
                 .ToDictionary(k => k["value"].ToString(), v => v["Type"].ToString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...