我正在使用JSON.NET的JsonTextWriter,如下所示:
var writer = new StringWriter();
var textWriter = (TextWriter)writer;
var jsonTextWriter = new JsonTextWriter(textWriter);
jsonTextWriter.WriteNull();
var data = jsonTextWriter.ToString();
如何实现该数据将是空字符串而不是"null"
?
答案 0 :(得分:3)
此实例中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();
希望有所帮助。