我有一个来自http响应的字符串
data = "[{'value':123,'Type':'Range'},{'value':456,'Type':'Fixed'}]"
我如何将其转换为C#中的字典列表?
答案 0 :(得分:4)
那里应该没有问题。
使用deserialising到List<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;
答案 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());