簡體   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