JsonTextWriter 使用 ToString() 将 null 序列化为 "null"



我使用JSON。. NET的jsontextwwriter如下所示:

var writer = new StringWriter();
var textWriter = (TextWriter)writer;
var jsonTextWriter = new JsonTextWriter(textWriter);
jsonTextWriter.WriteNull();
var data = jsonTextWriter.ToString();

如何实现数据将是空字符串而不是"null" ?

本例中JsonTextWriter的行为是正确的;为了在JSON中表示空值,期望的令牌是null。例如:

{
    "Name"    : "SomeGuy",
    "Address" : null
}

从你的问题来看,似乎你要做的是写一个实际的空字符串来表示完全缺乏值。你可以通过调用jsonTextWriter.WriteRaw("")来实现。但是,这将产生无效的JSON,因为您最终会得到:

{
    "Name"    : "SomeGuy",
    "Address" : 
}
我猜那也不是你想要的。要发出一个空字符串,实际上代表JSON中的空字符串值,您需要执行jsonTextWriter.WriteValue(""),这将产生预期的""令牌,我相信您正在寻找,它看起来像:
{
    "Name"    : "SomeGuy",
    "Address" : ""
}

作为一个完整的例子,要发出我一直在使用的对象将是这样的:

var writer = new StringWriter();
var textWriter = (TextWriter)writer;
var jsonTextWriter = new JsonTextWriter(textWriter);
jsonTextWriter.WriteStartObject();
jsonTextWriter.WritePropertyName("Name");
jsonTextWriter.WriteValue("SomeGuy");
jsonTextWriter.WritePropertyName("Address");
jsonTextWriter.WriteValue("");
jsonTextWriter.WriteEndObject();
var data = writer.ToString();

希望对你有帮助。

相关内容

  • 没有找到相关文章

最新更新