Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用JSON.NET创建带有嵌套值数组的JSON字符串?_C#_Json_Nested_Json.net_Converters - Fatal编程技术网

C# 如何使用JSON.NET创建带有嵌套值数组的JSON字符串?

C# 如何使用JSON.NET创建带有嵌套值数组的JSON字符串?,c#,json,nested,json.net,converters,C#,Json,Nested,Json.net,Converters,感谢@don jayamanne和@dbc for提到我的JSON需要格式良好 以下是我重新措辞的问题: 我们的应用程序正在使用JSON.NET创建JSON字符串 下面是我试图创建的JSON字符串: { "RouteID": "123321213312", "DriverName": "JohnDoe", "Shift": "Night", "ItineraryCoordinates": [ [ 9393,

感谢@don jayamanne和@dbc for提到我的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();
writer.WritePropertyName(“RouteID”);
serializer.Serialize(writer,routeID);
writer.WritePropertyName(“DriverName”);
序列化器。序列化(writer,driverName);
writer.WritePropertyName(“Shift”);
serializer.Serialize(writer,shift);
writer.WritePropertyName(“行程坐标”);
行程协调集合工厂tpCollFac=新行程协调集合工厂();
路线坐标和路线坐标;
StringBuilder coordSB=新的StringBuilder();
IList TrainerayCoordinateCollection=tpCollFac.createTrainerayCoordinateCollection();
对于(int j=0;j
每当我在代码中更改
writer.WriteStartObject()
的位置时,我总是会遇到以下错误:

状态对象中的标记StartObject将导致无效的JSON对象。路径“”


有人能给我一个大概的代码草案,告诉我如何使用JSON.NET写出我想要的JSON字符串吗?

正如评论中所说,您的JSON无效,它可能应该是:

{

    "RouteID": "123321213312",
    "DriverName": "JohnDoe",
    "Shift": "Night",
    "ItineraryCoordinates": [
        [ 9393, 4443 ],
        [ 8832, 3322 ],
        [ 223, 3432 ],
        [ 223, 3432 ]
    ]           
}
这里的示例向您展示了构建示例JSON的两种方法:

public class Route
{
    public string RouteID { get; set; }
    public string DriverName { get; set; }
    public string Shift { get; set; }

    public int[][] ItineraryCoordinates;


    public static string GetSampleJson() {

        var sampleRoute = new Route
        {
            RouteID = "123321213312",
            DriverName = "JohnDoe",
            Shift = "Night",
            ItineraryCoordinates = new int[][] { 
                new int[] {9393, 4443 },
                new int[] { 8832, 3322 },
                new int[] {  223, 3432 },
                new int[] { 223, 3432 }
            }
        };

        return JsonConvert.SerializeObject(sampleRoute, Formatting.Indented);
    }

    public static string GetSampleJson2()
    {
        var route = new JObject(
            new JProperty("RouteID", "123321213312"),
            new JProperty("DriverName", "JhonDoe"),
            new JProperty("Shift", "Night"),
            new JProperty("ItineraryCoordinates", new JArray(
                    new JArray(9393, 4443),
                    new JArray(8832, 3322 ),
                    new JArray( 223, 3432 ),
                    new JArray( 223, 3432)
                )
            ));

        return route.ToString();
    }
}

正如评论中所说,您的JSON无效,它可能应该是:

{

    "RouteID": "123321213312",
    "DriverName": "JohnDoe",
    "Shift": "Night",
    "ItineraryCoordinates": [
        [ 9393, 4443 ],
        [ 8832, 3322 ],
        [ 223, 3432 ],
        [ 223, 3432 ]
    ]           
}
这里的示例向您展示了构建示例JSON的两种方法:

public class Route
{
    public string RouteID { get; set; }
    public string DriverName { get; set; }
    public string Shift { get; set; }

    public int[][] ItineraryCoordinates;


    public static string GetSampleJson() {

        var sampleRoute = new Route
        {
            RouteID = "123321213312",
            DriverName = "JohnDoe",
            Shift = "Night",
            ItineraryCoordinates = new int[][] { 
                new int[] {9393, 4443 },
                new int[] { 8832, 3322 },
                new int[] {  223, 3432 },
                new int[] { 223, 3432 }
            }
        };

        return JsonConvert.SerializeObject(sampleRoute, Formatting.Indented);
    }

    public static string GetSampleJson2()
    {
        var route = new JObject(
            new JProperty("RouteID", "123321213312"),
            new JProperty("DriverName", "JhonDoe"),
            new JProperty("Shift", "Night"),
            new JProperty("ItineraryCoordinates", new JArray(
                    new JArray(9393, 4443),
                    new JArray(8832, 3322 ),
                    new JArray( 223, 3432 ),
                    new JArray( 223, 3432)
                )
            ));

        return route.ToString();
    }
}

您的JSON字符串无效。这就是为什么生成这样一个字符串会有困难的部分原因。使用以下方法验证JSON字符串,然后将JSON上载到,您将看到它无效。您可能希望
“行程坐标”
是数组而不是对象。您的JSON字符串无效。这就是为什么生成这样一个字符串会有困难的部分原因。使用以下方法验证JSON字符串,然后将JSON上载到,您将看到它无效。可能你希望“行程坐标”是一个数组而不是一个对象。是的,我刚刚在你发表文章时更正了JSON。Thx。我认为你在构建JSON的过程中走了一条非常复杂的路线。是的,我刚刚在你发表文章时更正了JSON。Thx.我认为构建JSON的过程非常复杂。