C# 使用自定义条件和参数拆分字符串

C# 使用自定义条件和参数拆分字符串,c#,.net,string,linq,split,C#,.net,String,Linq,Split,将这些字符串拆分为列表的最佳方法是什么 比方说,我想获得定义为的SampleObject列表: class SampleObject { public string Letter { get; set; } public string FirstNumber { get; set; } public string SecondNumber{ get; set; } } 为此,我们使用Json.Net的方法。这是他们的web帮助中的示例: string json = @"

将这些字符串拆分为
列表的最佳方法是什么

比方说,我想获得定义为的SampleObject列表:

class SampleObject
{
    public string Letter { get; set; }
    public string FirstNumber { get; set; }
    public string SecondNumber{ get; set; }
}
为此,我们使用Json.Net的方法。这是他们的web帮助中的示例:

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);
}
JArray aAllValues=JArray.Parse(json);
var SampleObjectCollection=new List();
foreach(所有价值中的JArray aValues)
{
var oSampleObject=新的SampleObject();
int指数=0;
foreach(aValues.Children()中的var oProperty)
{
开关(索引)
{
案例0:
oSampleObject.Letter=oProperty.Value();
打破
案例1:
oSampleObject.FirstNumber=oProperty.Value();
打破
案例2:
oSampleObject.SecondNumber=opProperty.Value();
打破
}
索引++;
}
添加(oSampleObject);
}
我们使用Json.Net的方法来实现这一点。这是他们的web帮助中的示例:

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);
}
JArray aAllValues=JArray.Parse(json);
var SampleObjectCollection=new List();
foreach(所有价值中的JArray aValues)
{
var oSampleObject=新的SampleObject();
int指数=0;
foreach(aValues.Children()中的var oProperty)
{
开关(索引)
{
案例0:
oSampleObject.Letter=oProperty.Value();
打破
案例1:
oSampleObject.FirstNumber=oProperty.Value();
打破
案例2:
oSampleObject.SecondNumber=opProperty.Value();
打破
}
索引++;
}
添加(oSampleObject);
}

您可以使用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);        
}
dynamic items=JsonConvert.DeserializeObject(jsonString);
var list=新列表();
foreach(项目中的var项目)
{ 
var sampleObject=新的sampleObject
{
字母=项[0]。ToString(),
FirstNumber=项[1]。ToString(),
SecondNumber=项目[2]。ToString()
}
list.Add(sampleObject);
}

您可以使用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);        
}
dynamic items=JsonConvert.DeserializeObject(jsonString);
var list=新列表();
foreach(项目中的var项目)
{ 
var sampleObject=新的sampleObject
{
字母=项[0]。ToString(),
FirstNumber=项[1]。ToString(),
SecondNumber=项目[2]。ToString()
}
list.Add(sampleObject);
}

它看起来像JSON。也许你应该使用JSON解析器?是的。它是一个没有数据键名的
JSON
@MarcinJuraszek如果您不能使用JSON解析器,则正则表达式比拆分更好。@lexeRoy尝试将其反序列化为
string[][]
array,然后将该数组转换为类实例。@MarcinJuraszek已经尝试过,它会提示
无法将当前JSON对象(例如,{“name”:“value”})反序列化为'System.string[]'因为类型需要JSON数组(例如[1,2,3])才能正确反序列化。
。昨天我已经发布了一个关于用键名解析JSON的问题,但我没有幸运地收到任何见解。它看起来像JSON。也许你应该使用JSON解析器?是的。它是一个没有数据键名的
JSON
@MarcinJuraszek如果您不能使用JSON解析器,则正则表达式比拆分更好。@lexeRoy尝试将其反序列化为
string[][]
array,然后将该数组转换为类实例。@MarcinJuraszek已经尝试过,它会提示
无法将当前JSON对象(例如,{“name”:“value”})反序列化为'System.string[]'因为类型需要JSON数组(例如[1,2,3])才能正确反序列化。
。昨天我已经发布了一个关于使用键名解析JSON的问题,但我没有幸运地收到任何见解。无法反序列化此问题,因为数组上下文中没有包含键名。我能够在使用您的测试数据进行的测试中使其工作。对不起,我忘了使用您的动态。威尔+1这个,因为它也在工作。谢谢你,伙计!无法对此进行反序列化,因为数组上下文中未包含键名。我在使用测试数据进行的测试中能够使其正常工作。对不起,我忘了使用动态。威尔+1这个,因为它也在工作。谢谢你,伙计!