在JSON格式中,數字和布爾值在字符串周圍沒有引號,而字符串則是(請參閱JSON.org)。
如果你想周圍所有的圖元的報價,你有幾種選擇:
- 更改您的序列化是
string
類型的對象的屬性。
- 將您的值放入
Dictionary<string, string>
(或DTO),然後序列化。
- 定製
JsonConverter
進行轉換。此選項的優點是可以全局應用,因此您不必更改所有類。
前兩個選項是不言自明的。如果你選擇去同一個轉換器,代碼可能是這個樣子:
class PrimitiveToStringConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType.IsPrimitive;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(value.ToString().ToLower());
}
public override bool CanRead
{
get { return false; }
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
要使用它,只需將轉換器的實例傳遞給JsonConvert.SerializeObject
方法。
string json = JsonConvert.SerializeObject(foo, new PrimitiveToStringConverter());
演示:
class Program
{
static void Main(string[] args)
{
Foo foo = new Foo
{
Int = 6,
Bool = true,
Float = 3.14159
};
string json = JsonConvert.SerializeObject(foo, new PrimitiveToStringConverter());
Console.WriteLine(json);
}
}
class Foo
{
public int Int { get; set; }
public bool Bool { get; set; }
public double Float { get; set; }
}
輸出:
{"Int":"6","Bool":"true","Float":"3.14159"}
如果你希望它們被序列化爲字符串,然後讓他們字符串,而不是數字類型。 – Jon
數字不需要用JSON括在引號中。你爲什麼需要他們? –
推送到需要引號的API。如果讓他們成爲字符串是路要走,我會繼續前進並做出改變。謝謝你,喬恩。 –