如何在不添加"?

  • 本文关键字:添加 c# json json.net
  • 更新时间 :
  • 英文 :


我正在用C#、.NET Framework 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;
}

但它会生成这样的字符串:

["{\"Code\":\"81861400008000002386\",\"BatchId\":5,\"ProductId\":7,\"CodeLevel\":1,\"CommisioningFlag\":1,\"Timespan\":null}",

你注意到额外的"之前{?

我怎么能不这么说呢?

我认为问题是我在循环中向数组添加了一个值:

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

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

如何在不添加"?

的情况下向JSON数组添加元素

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

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

相关内容

  • 没有找到相关文章

最新更新