这是列表数组:
{"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”。 来自
所以如何删除{“东西”??
答案 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格式的字符串,如果将其反序列化为正确的object
或JObject
,则更容易使用该信息。
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[] { ':' }));
希望这是你想要的:)