【发布时间】:2016-02-10 19:34:06
【问题描述】:
您好,我目前正在做我最后一年的项目,并且快要结束了。但是,我被困在一件小事上,那就是用 C# 解析下面的 JSON 字符串。
My Bad... 复制并粘贴了 JSON 文件的摘录。这是我检查 jsonutils.org 时有效的整个 JSON 字符串
{
"activities-steps" : [
{
"dateTime" : "2016-02-10",
"value" : "2624"
}
],
"activities-steps-intraday" : {
"dataset" : [
{
"time" : "00:00:00",
"value" : 0
},
{
"time" : "00:01:00",
"value" : 0
},
{
"time" : "00:02:00",
"value" : 0
},
{
"time" : "00:03:00",
"value" : 0
},
{
"time" : "00:04:00",
"value" : 0
},
{
"time" : "00:05:00",
"value" : 0
},
{
"time" : "00:06:00",
"value" : 0
},
{
"time" : "00:07:00",
"value" : 0
},
{
"time" : "00:08:00",
"value" : 0
},
{
"time" : "00:09:00",
"value" : 0
},
{
"time" : "00:10:00",
"value" : 0
},
{
"time" : "00:11:00",
"value" : 0
},
{
"time" : "00:12:00",
"value" : 0
},
{
"time" : "00:13:00",
"value" : 0
},
{
"time" : "00:14:00",
"value" : 0
},
{
"time" : "00:15:00",
"value" : 0
},
{
"time" : "00:16:00",
"value" : 0
},
{
"time" : "00:17:00",
"value" : 0
}
],
"datasetInterval" : 1,
"datasetType" : "minute"
}
}
我需要第一个 JSON 对象中的 dateTime 值,然后是第二个对象中的时间和值项的值。我已经实现了下面的代码,但是它一直给我一个NullReferenceException。
这些方法用于帮助解析 JSON 对象
public class RootObject
{
public Activity activity { get; set; }
public ActivityGranular activity_granular { get; set; }
}
public class Activity
{
public string dateTime { get; set; }
public string value { get; set; }
}
public class ActivityGranular
{
public List<ActivityGranularDatapoint> dataset { get; set; }
public int datasetGranularity { get; set; }
public string datasetGranularityType { get; set; }
}
public class ActivityGranularDatapoint
{
public string time { get; set; }
public int value { get; set; }
}
Main 类中的 MainCode 在执行时在上面的根对象类的两个根元素中返回 null 并给出 NullReferenceExceptions
resultsJSON.Replace("-", "_");
root = JsonConvert.DeserializeObject<RootObject>(resultsJSON);
activity = root.activites_steps;
activityGranular = root.activities_steps_intraday;
for (int a = 0; a < activityGranular.dataset.Count; a++)
{
activityGranularDatapoint[a].time = activityGranular.dataset[a].time;
activityGranularDatapoint[a].value = activityGranular.dataset[a].value;
}
非常感谢所有帮助:)
【问题讨论】:
-
您如何发布数据?我们可以在 WebAPI 或您的控制器中看到 AJAX 调用和端点吗?
-
没关系 - 误解了你在做什么。
-
我在 Fitbit API 中使用 HttpRequest 并将响应存储在 WebResponse 变量中。然后我使用 Stream reader 将响应字符串读入 resultsJSON 字符串
-
我想读取第一个对象中的 dateTime 值,然后遍历第二个对象中的每个时间和值项
-
您在哪一行出现 NulReferenceException?