如何拆分数组列表?

时间:2017-04-03 04:56:59

标签: c# .net json

这是列表数组:

{"things":{"1":"1_4","3":"3_13","4":"4_18","5":"5_25","6":"6_28","7":"7_32"}}

这是代码:

var t = things;
string aa = t[0].ToString();

如何拆分上面的数组,分隔符和_。 从上面的数组我只想1_4,3_13 ...这一列并保存在两个不同的var。

我正在使用

string[] ss = aa.Split(new char[] { ',', '|', }, System.StringSplitOptions.RemoveEmptyEntries);

问题是在第一个列表{“事物”:{“1”:“1_4”。 来自

所以如何删除{“东西”??

3 个答案:

答案 0 :(得分:5)

您不应该自己解析JSON。不要重新发明轮子。

你应该定义一个类

public class MyClass
{
    [JsonProperty("things")]
    public Dictionary<int, string> Things { get; set; }
}

然后将字符串反序列化为MyClass

的实例
var rawData = "{\"things\":{\"1\":\"1_4\",\"3\":\"3_13\",\"4\":\"4_18\",\"5\":\"5_25\",\"6\":\"6_28\",\"7\":\"7_32\"}}";
var data = JsonConvert.DeserializeObject<MyClass>(rawData);

然后您可以使用data

Console.WriteLine(data.Things[1]);

您应该将Newtonsoft.Json Nuget包添加到您的项目中,并将using Newtonsoft.Json命名空间添加到您的代码文件中。

答案 1 :(得分:4)

您应该使用Json.Net之类的JSON库,而不是字符串操作。简单地说,因为您正在使用JSON格式的字符串,如果将其反序列化为正确的objectJObject,则更容易使用该信息。

JObject的示例:

string json = @"{""things"":{""1"":""1_4"",""3"":""3_13"",""4"":""4_18"",""5"":""5_25"",""6"":""6_28"",""7"":""7_32""}}";
var jObj = Newtonsoft.Json.Linq.JObject.Parse(json);
var prop1 = jObj.GetValue("things").GetPropertyValue("1").ConvertTo<string>();
var prop4 = jObj.GetValue("things").GetPropertyValue("4").ConvertTo<string>();

注意:如果要使用强类型对象结构,可以创建代表JSON结构的类。

答案 2 :(得分:-1)

您应首先按{拆分,然后丢弃第一个,之后您将离开:

  

&#34; 1&#34;:&#34; 1_4&#34;&#34; 3&#34;:&#34; 3_13&#34;&#34; 4&#34;:&# 34; 4_18&#34;&#34; 5&#34;:&#34; 5_25&#34;&#34; 6&#34;:&#34; 6_28&#34;&#34; 7&#34 ;:&#34; 7_32&#34;}}

现在你与,分开并获得

  

&#34; 1&#34;:&#34; 1_4&#34;

     

&#34; 3&#34;:&#34; 3_13&#34;等等。

然后用:拆分每个,然后取第二个。

只记得最后一个是"7_32"}},你应该删除尾随的}}

像这样:

var elems = aa.Split(new[] { '{' })[1].Split(new[] { ',' });
var res = elems.Select(obj => obj.Trim("}".ToCharArray()).Split(new[] { ':' }));

希望这是你想要的:)