我正在尝试创建以下格式的JObject
{history_dates:
[
{start_date: "2014-03-02" status: "Added" end_date: "2014-03-02"},
{start_date: "2014-04-02" status: "Added" end_date: "2014-04-02"},
{start_date: "2014-05-02" status: "Deleted" end_date: "2014-05-02"}
]}
当它试图将d添加到JChild时,它崩溃了!
JObject jChild = new JObject();
for (int i = 0; i < m_iHistCount; i++)
{
string endDate = "";
if (m_dtEndDate[i] != GetDefaultDate())
{
endDate = m_dtEndDate[i].ToString("yyyy-MM-dd");
}
var d = new { start_date = m_dtHistory[i].Date.ToString("yyyy-MM-dd"), status = (SYNC_STATUS)histDtSyncStatus[i], end_date = endDate };
jChild.Add(d);
}
这不是正确的方法吗?
答案 0 :(得分:1)
看来你尝试了错误的方法。请查看以下示例:
//declare JArray to store history_dates value
JArray historyDates = new JArray();
for (int i = 0; i < m_iHistCount; i++)
{
string endDate = "";
if (m_dtEndDate[i] != GetDefaultDate())
{
endDate = m_dtEndDate[i].ToString("yyyy-MM-dd");
}
var d = string.Format("{{ \"start_date\" = \"{0}\", \"status\" = \"{1}\", \"end_date\" = \"{2}\"}}",
m_dtHistory[i].Date.ToString("yyyy-MM-dd"),
(SYNC_STATUS)histDtSyncStatus[i],
endDate);
historyDates.Add(d);
}
JObject root = new JObject();
//add property history_dates and assign above mentioned JArray as the property value
root.Add("history_dates", historyDates);
您还可以构造匿名对象,然后将其序列化为字符串,如下所示:
var d = new { start_date = m_dtHistory[i].Date.ToString("yyyy-MM-dd"), status = (SYNC_STATUS)histDtSyncStatus[i], end_date = endDate };
historyDates.Add(JsonConvert.SerializeObject(d));
但是首先构建Json字符串会更有效