如何将字符串转换为字典列表

时间:2020-02-26 13:19:40

标签: c# string dictionary

我有一个来自http响应的字符串

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

我如何将其转换为C#中的字典列表?

3 个答案:

答案 0 :(得分:4)

那里应该没有问题。

使用deserialisingList<customObject>List<Dictionary<string,string>>
使用Json.net库。

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 :(得分:1)

更好的方法是使用简单的对象列表: 首先创建如下的类

      function messageLang() {
    if (language === 'en') {
      return 'Message in English'
    } else if (language === 'fr') {
      return 'Message in French'
    } else if (language === 'es') {
      return 'Message in Spanish'
    } (...etc)
  }

const msgLang = messageLang()

然后使用Newtonsoft.Json进行DeserializeObject

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

但是请回答您的字典问题列表

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

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

答案 2 :(得分:0)

您可以尝试使用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());
相关问题