![](/img/trans.png)
[英]how to prevent JsonConvert.SerializeObject from adding quotes around strings
[英]How to stop JsonConvert.SerializeObject from changing ints to strings when converting XML to JSON
有沒有辦法阻止 Newtonsoft 的JsonConvert.SerializeObject
方法用字符串替換整數? 示例代碼如下:
XmlDocument doc = new XmlDocument();
string xml = @"<data><someProperty>12345</someProperty></data>";
doc.LoadXml(xml);
string json = JsonConvert.SerializeObject(doc);
當前輸出為
{"data":{"someProperty":"12345"}}
而我想要的輸出是
{"data":{"someProperty":12345}}
如果您覆蓋JsonTextWriter
您應該能夠攔截每個字符串值,嘗試解析它,並以不同的方式寫出它。
public class XmlIntWriter : JsonTextWriter
{
public XmlIntWriter(TextWriter textWriter) : base(textWriter)
{
}
public override void WriteValue(string value)
{
if (int.TryParse(value, out var i))
this.WriteValue(i);
else
base.WriteValue(value);
}
}
將自定義編寫器與 Newtonsoft xml 轉換器一起使用有點繁瑣,但應該看起來像;
public static void Serialise(XDocument doc, TextWriter writer)
{
var converter = new XmlNodeConverter ();
var settings = new JsonSerializerSettings
{
Converters = new JsonConverter[] { converter }
};
var serializer = JsonSerializer.Create(settings);
using var xmlWriter = new XmlIntWriter(writer);
serializer.Serialize(xmlWriter, doc);
}
(我沒有測試過這些)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.