Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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数组中添加元素而不添加“;?_C#_Json_Json.net - Fatal编程技术网

C# 如何向JSON数组中添加元素而不添加“;?

C# 如何向JSON数组中添加元素而不添加“;?,c#,json,json.net,C#,Json,Json.net,我正在用C#、.NETFramework 4.0和Newtonsoft.Json 6.0.8开发一个库 我正在尝试创建自己的序列化程序: public static string Serialize(List<Models.Codes> codes) { if (codes == null) throw new ArgumentNullException("codes"); if (codes.Count == 0) throw new

我正在用C#、.NETFramework 4.0和Newtonsoft.Json 6.0.8开发一个库

我正在尝试创建自己的序列化程序:

public static string Serialize(List<Models.Codes> codes)
{
    if (codes == null)
        throw new ArgumentNullException("codes");
    if (codes.Count == 0)
        throw new ArgumentOutOfRangeException("codes");

    StringWriter sw = new StringWriter();
    JsonTextWriter writer = new JsonTextWriter(sw);

    writer.WriteStartArray();
    foreach (Models.Codes code in codes)
        writer.WriteValue(CodesSerializer.Serialize(code));

    writer.WriteEndArray();

    return sw.ToString();
}

public static string Serialize(Models.Codes code)
{
    if (code == null)
        throw new ArgumentNullException("code");

    StringWriter sw = new StringWriter();
    JsonTextWriter writer = new JsonTextWriter(sw);

    writer.WriteStartObject();

    writer.WritePropertyName("Code");
    writer.WriteValue(code.Code);

    writer.WritePropertyName("BatchId");
    writer.WriteValue(code.BatchId);

    writer.WritePropertyName("ProductId");
    writer.WriteValue(code.ProductId);

    writer.WritePropertyName("CodeLevel");
    writer.WriteValue(code.CodeLevel);

    writer.WritePropertyName("CommisioningFlag");
    writer.WriteValue(code.CommisioningFlag);

    writer.WritePropertyName("Timespan");
    writer.WriteValue(code.Timespan);

    if (!string.IsNullOrWhiteSpace(code.Username))
    {
        writer.WritePropertyName("Username");
        writer.WriteValue(code.Username);
    }

    if (!string.IsNullOrWhiteSpace(code.Source))
    {
        writer.WritePropertyName("Source");
        writer.WriteValue(code.Source);
    }

    if (!string.IsNullOrWhiteSpace(code.Reason))
    {
        writer.WritePropertyName("Reason");
        writer.WriteValue(code.Reason);
    }

    writer.WriteEndObject();

    string text = sw.ToString();

    return text;
}
在{之前,你注意到额外的“吗?”

我怎么能不说“

我认为问题在于我正在向循环中的数组添加一个值:

    writer.WriteStartArray();
    foreach (Models.Codes code in codes)
        writer.WriteValue(CodesSerializer.Serialize(code));

    writer.WriteEndArray();
我已经更改了
writer.WriteValue(CodesSerializer.Serialize(code));
writer.WriteRaw(CodesSerializer.Serialize(code));
现在它不写了”,但现在我需要写JSON值分隔符,不能使用
writer.WriteValueDelimiter();


如何在不添加“”的情况下向JSON数组添加元素?

我找到了解决方案。我必须使用
writer.WriteRawValue()

    writer.WriteStartArray();
    foreach (Models.Codes code in codes)
        writer.WriteValue(CodesSerializer.Serialize(code));

    writer.WriteEndArray();
writer.WriteStartArray();
foreach (Models.Codes code in codes)
    writer.WriteRawValue(CodesSerializer.Serialize(code));

writer.WriteEndArray();