【发布时间】:2016-02-15 19:26:21
【问题描述】:
感谢 @don-jayamanne 和 @dbc 提到我的 JSON 格式必须正确
这是我改写的问题:
我们的应用程序正在使用 JSON.NET 创建 JSON 字符串。
这是我要创建的 JSON 字符串:
{
"RouteID": "123321213312",
"DriverName": "JohnDoe",
"Shift": "Night",
"ItineraryCoordinates": [
[
9393,
4443
],
[
8832,
3322
],
[
223,
3432
],
[
223,
3432
]
]
}
这是我为创建上述 JSON 字符串而编写的错误代码:
writer.WriteStartObject();
writer.WritePropertyName("RouteID");
serializer.Serialize(writer, routeID);
writer.WritePropertyName("DriverName");
serializer.Serialize(writer, driverName);
writer.WritePropertyName("Shift");
serializer.Serialize(writer, shift);
writer.WritePropertyName("ItineraryCoordinates");
ItineraryCoordinatesCollectionFactory tpCollFac = new ItineraryCoordinatesCollectionFactory();
ItineraryCoordinates anItineraryCoordinates;
StringBuilder coordSB = new StringBuilder();
IList<TimePeriod> ItineraryCoordinatesCollection = tpCollFac.createItineraryCoordinatesCollection();
for (int j = 0; j < ItineraryCoordinatesCollection.Count(); j++)
{
anItineraryCoordinates = ItineraryCoordinatesCollection[j];
writer.WriteStartObject();
writer.WritePropertyName("nested");
coordSB.Append(anItineraryCoordinates.StartTimePeriodCoordinate.X.ToString());
coordSB.Append(" , ");
coordSB.Append(anItineraryCoordinates.StartTimePeriodCoordinate.Y.ToString());
serializer.Serialize(writer, coordSB.ToString());
writer.WriteEndObject();
coordSB.Clear();
writer.WriteStartObject();
writer.WritePropertyName("nested");
coordSB.Append(aTimePeriod.EndTimePeriodCoordinate.X.ToString());
coordSB.Append(" , ");
coordSB.Append(aTimePeriod.EndTimePeriodCoordinate.Y.ToString());
serializer.Serialize(writer, coordSB.ToString());
coordSB.Clear();
writer.WriteEndObject();
} // end of for (int j = 0; j < OrderedTimePeriodsCollection.Count(); j++)
writer.WriteEndObject(); // closing off Json Object LogEventsTimePeriods
每当我在代码中更改writer.WriteStartObject() 的位置时,我都会收到以下错误:
状态 Object 中的令牌 StartObject 将导致 JSON 对象无效。路径''。
谁能给出一个粗略的代码草案,说明如何使用 JSON.NET 写出我想要的 JSON 字符串?
【问题讨论】:
-
您的 JSON 字符串无效。这就是您无法生成这样一个字符串的部分原因。使用以下内容验证您的 JSON 字符串 jsonlint.com
-
上传你的 JSON 到 jsonlint.com 你会发现它是无效的。可能您希望
"ItineraryCoordinates"成为 array 而不是对象。
标签: c# json nested json.net converters