这是我的代码在我的公共Form1()
中的样子while (accessReader.Read())
{
for (int i = 0; i < count; i++)
{
string urlpart2= accessReader.GetValue(i).ToString();
WebRequest request = WebRequest.Create("urlpart1" + urlpart2+ "urlpart3");
string json;
var response = request.GetResponse();
request.ContentType = "application/json; charset=utf-8";
using (var streamr = new StreamReader(response.GetResponseStream()))
{
json = streamr.ReadToEnd();
List<MyObject> list = JsonConvert.DeserializeObject<List<MyObject>>(json);
var date = MyObject.Start;
//MessageBox.Show(date.ToString());
这是我的类,表示我的json字符串返回的不同变量
public class MyObject
{
public int Type { get; set; }
public string Country { get; set; }
public string Channel { get; set; }
public string Code { get; set; }
public DateTime Start { get; set; }
public DateTime End { get; set; }
}
这是json字符串将返回的内容,唯一不同的变化可能是类型,代码,开始和结束。 - 我想要开始和结束值。
[{"Type":1,"Country":"CA","Channel":"","Code":"1EZ","Start":"2014-10-24T00:00:00","End":"2015-10-23T00:00:00"},{"Type":2,"Country":"","Channel":"","Code":"UAD","Start":"2014-10-24T00:00:00","End":"2017-10-23T00:00:00"},{"Type":2,"Country":"","Channel":"","Code":"TPQ","Start":"2014-10-24T00:00:00","End":"2017-10-23T00:00:00"},{"Type":3,"Country":"","Channel":"","Code":"SVC_PRIORITY","Start":"2014-10-24T00:00:00","End":"2017-10-23T00:00:00"}]
我对编程很新,我遇到了一个我不太懂的错误'非静态字段,方法或属性需要一个对象引用'。
另外我在Form1.cs中创建了这个类,而不是在我的Project Solution中创建一个新类(如果这很重要?)
答案 0 :(得分:4)
您尝试访问MyObject.Start
,就像它是静态属性或字段一样。但是它是一个实例字段,基本上你需要一个实例来访问该字段。
MyObject obj = list[0];
var date = obj.Start;
字段List<MyObject> list = ...
包含从json文件反序列化的所有数据(如果json文件中不存在任何数据,则为none!)。
我想你想要访问json文件的所有数据,在这种情况下,我更喜欢通过foreach循环遍历对象。
foreach (MyObject item in list) { .... }
答案 1 :(得分:1)
问题在于行var date = MyObject.Start;
您已经创建了一个MyObjects列表。要访问它们,您必须使用列表索引,即var first = list[0]
返回第一个元素。然后,您可以获得所需的日期:first.Start
为了处理列表中的每个条目,您可以使用foreach
循环,如下所示:
foreach (var obj in list) {
// use obj.Start, obj.End values
}