将这些字符串拆分为List<customObject>
的最佳方法是什么?
[
[
"a",
"123",
"456"
],
[
"b",
"456",
"789"
]
]
说,我想获得带有定义的SampleObject列表:
class SampleObject
{
public string Letter { get; set; }
public string FirstNumber { get; set; }
public string SecondNumber{ get; set; }
}
答案 0 :(得分:3)
您可以使用Json.Net将其反序列化为动态对象,然后填充自定义对象
dynamic items = JsonConvert.DeserializeObject(jsonString);
var list = new List<SampleObject>();
foreach (var item in items)
{
var sampleObject = new SampleObject
{
Letter = item[0].ToString(),
FirstNumber = item[1].ToString(),
SecondNumber = item[2].ToString()
}
list.Add(sampleObject);
}
答案 1 :(得分:2)
我们使用Json.Net的Jarray.Parse方法。这是他们的网络帮助中的示例:
string json = @"[
'Small',
'Medium',
'Large'
]";
JArray a = JArray.Parse(json);
您可以创建对象的实例,然后从数组中的每个元素加载。
以下是一个使用示例字符串和类的工作示例:
JArray aAllValues = JArray.Parse(json);
var SampleObjectCollection = new List<SampleObject>();
foreach (JArray aValues in aAllValues)
{
var oSampleObject = new SampleObject();
int index = 0;
foreach (var oProperty in aValues.Children())
{
switch (index)
{
case 0:
oSampleObject.Letter = oProperty.Value<String>();
break;
case 1:
oSampleObject.FirstNumber = oProperty.Value<String>();
break;
case 2:
oSampleObject.SecondNumber = oProperty.Value<String>();
break;
}
index++;
}
SampleObjectCollection.Add(oSampleObject);
}