C# 如何向JSON数组中添加元素而不添加“;?
我正在用C#、.NETFramework 4.0和Newtonsoft.Json 6.0.8开发一个库 我正在尝试创建自己的序列化程序: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
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();