我的问题很清楚。我想在这个json数组中获取指定的项目(只有name' name'的值);
https://i.hizliresim.com/o6Z0Wb.png<示例('结果'部分应该在前一个圆圈中。);
{"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);
}
答案 0 :(得分:0)
以下是一些代码:
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;}
}
这里#s是使用LinqPad的结果图片。行values.Dump()
调用LinqPad定义的扩展方法,将其附加的对象输出到代码windor下面的“Results”窗口。
答案 1 :(得分:0)
首先,您必须将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);
答案 2 :(得分:0)
Visual Studio可以为您做一个巧妙的技巧。首先,复制您希望查询的json样本,打开一个新的C#文件,然后选择Edit
- &gt; Paste Special
- &gt; Paste JSON as classes
。
BOOM!以下是您需要的课程,您应该给他们有意义的名字。
接下来,您可以像这样对Json进行手工化:
var myInstance = JsonConvert.DeserializeJson<MyClass>(jsonString);
这将为您提供根对象的实例,数据保存在其中的数组中。
编辑:
要选择值,您可以执行以下操作(在反序列化上面一行中的数据之后):
myInstance.Array.Select(x => x.name).ToList();
这将给出一个列表,其中只包含所有entires的name属性中的字符串。