formatting - JSON.Net 将 XML 序列化为 JSON 驼峰式案例

如何让 JSON.Net 将我的 XML 序列化为驼峰式 JSON 并且不使用“@”?

这是我目前拥有的,但它在属性前面加上@,而不是驼峰式大小写...

XmlDocument doc = new XmlDocument();
doc.LoadXml(myXmlString);

string jsonText = Newtonsoft.Json.JsonConvert.SerializeObject(doc, new JsonSerializerSettings()
{
    NullValueHandling = NullValueHandling.Ignore,
    ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
    ContractResolver = new CamelCasePropertyNamesContractResolver()
});

最佳答案

为您的 XML 数据制作模型

例子

public class MyClass
    {
        [JsonProperty("@SomeXMLProperty")]
        public string MyString{ get; set; }
    }

然后将 XML 反序列化为您的模型

XDocument xmlDocument = XDocument.Parse(xmlData);
string jsonData = JsonConvert.SerializeXNode(xmlDocument);
var myClass = JsonConvert.DeserializeObject<MyClass>(jsonData); 

然后只需使用 CamelCasePropertyNamesContractResolverFormatting.Indented

string json = JsonConvert.SerializeObject(rootObject,
                              Newtonsoft.Json.Formatting.Indented,
                              new JsonSerializerSettings { ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver() });  

更新:

第一个解决方案简单干净(不需要编写自定义解析器等)这只是为了删除@符号

  var xml = new XmlDocument();
  xml.XmlResolver = null;        
  xml.Load("yourfilehere");

  var json = JsonConvert.SerializeXmlNode(xml, Newtonsoft.Json.Formatting.Indented);

  var withoutATSign = System.Text.RegularExpressions.Regex.Replace(json, "(?<=\")(@)(?!.*\":\\s )", String.Empty, System.Text.RegularExpressions.RegexOptions.IgnoreCase); 

如果有人知道这两种情况的更好解决方案,那么第一种情况会很高兴。

WebAPI 添加

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented; 
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

https://stackoverflow.com/questions/15235619/

相关文章:

vim - 使用 Vim,是否有更有效的方法来根据这个最佳实践来格式化 LaTeX 段落?

xml - 如何使用 gVim 格式化未格式化的 XML 文档?

python - 在 Python 中口头格式化数字

formatting - 从 Mathematica 导出自定义格式的表达式

formatting - 如何在我的博客文章中使用 stackoverflow 样式标记?

c# - DataGridViewCheckBoxColumn : FormatException

Python 浮点格式 - 类似于 "g",但数字更多

html - 用于 HTML 和 CSS 中的双面打印的甚至分页符

c# - 使用 String.Format 时,如果字符串值不为 null 或为空,是否有一种简单的

ios - iPhone : How to get number from string with