c#获取指定名称的数组的所有子节点
我的问题很明确。我想在这个json数组中获得指定的项目(只有名称'name'的值);c#获取指定名称的数组的所有子节点
https://i.hizliresim.com/o6Z0Wb.png <示例('result'部分应该在前一个圆圈中。
{"success":true,"message":"","result":[
{"name":"VALUE_I_WANT_TO_GET1","Created":"2017-06-06T01:22:35.727"},
{"name":"VALUE_I_WANT_TO_GET2","Created":"2017-06-06T01:22:35.727"},
{"name":"VALUE_I_WANT_TO_GET3","Created":"2017-06-06T01:22:35.727"},
{"name":"VALUE_I_WANT_TO_GET4","Created":"2017-06-06T01:22:35.727"}
]}
正如你可以看到... ...这是一个清晰的问题。我的代码是(我认为它应该是这样的);
var json = wc.DownloadString("website/url");
JObject data = JObject.Parse(json);
var test = (string)data["result"][/*I want to get all values with name 'name'*/]["name"];
我用这个代码做了它,你可以用它:)
JObject data = JObject.Parse(json);
for (int i = 0; i <= data["result"].Count()-1; i++)
{
var test = (string)data["result"][i]["name"];
listBox1.Items.Add(test);
}
下面是一些代码:结果
void Main()
{
// create array
DataFromJSON[] data = new UserQuery.DataFromJSON[3];
data[0] = new DataFromJSON() { Data = "val0", Created = DateTime.Now };
data[1] = new DataFromJSON() { Data = "val1", Created = DateTime.Now };
data[2] = new DataFromJSON() { Data = "val2", Created = DateTime.Now };
var values = from x in data
select x.Data;
values.Dump();
}
// Define other methods and classes here
public class DataFromJSON
{
public string Data { get; set; }
public DateTime Created { get; set;}
}
这里#SA的图片,使用LinqPad 。行values.Dump()
调用由LinqPad定义的扩展方法,将其附加到的对象输出到代码窗口下的“结果”窗口。
对不起,但我的代码是; var json = wc.DownloadString(“https:// site/JSON_DATA”); JObject data = JObject.Parse(json); var test =(string)data [“result”] [0-226] [“NAME_TO_GET_VALUE”] textBox7.Text = test; – Radagast
首先你要反序列化的JSON转换成你喜欢的类型:
MyType results = JsonConvert.DeserializeObject<MyType>(json_array);
其中MyType
是这样的:
class MyType
{
public bool success { get; set; }
public string message { get; set; }
public List<AnotherType> results { get; set; }
}
和
class AnotherType
{
public string data { get; set; }
public DateTime Created { get; set; }
}
现在从它那里得到的第一个227元并选择其data
:
var data = myInstance.results.Take(227).Select(x => x.data);
不,我想要227个孩子以一个特定的名字:deserialized_Json [“results”] [0-227] [“SPECİFİED_NAME_FOR_GET_VALUES”]; – Radagast
有一个巧妙的方法Visual Studio可以为你做。首先,复制您期望查询的json样本,打开一个新的C#文件,然后选择Edit
- >Paste Special
- >Paste JSON as classes
。
BOOM!这里是你需要的类,你应该给他们有意义的名字。
接下来,你可以desiralize JSON的,像这样:
var myInstance = JsonConvert.DeserializeJson<MyClass>(jsonString);
这会给你的根对象的实例,以保存在里面的阵列中的数据。
编辑:
要选择的值,你可以做这样的事情(你在该行反序列化上面的数据后):
myInstance.Array.Select(x => x.name).ToList();
这将使仅包含字符串列表所有你的名字的属性。
请显示示例json .. –
我编辑的问题 – Radagast
什么类型的'json_array'和您使用哪个框架进行反序列化? –