我使用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();
希望对你有帮助。