繁体   English   中英

使用自定义条件和分隔符分割字符串

[英]Split String with Custom conditions and delimeters

将这些字符串拆分为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; }
}

您可以使用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);        
}

为此,我们使用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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM