1

将这些字符串拆分为 a 的最佳方法是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; }
}
4

2 回答 2

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);        
}
于 2013-11-06T01:57:48.930 回答
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);
}
于 2013-11-06T01:51:02.023 回答