Formatting Net将XML序列化为JSON大小写

Formatting Net将XML序列化为JSON大小写,formatting,xml-serialization,json.net,Formatting,Xml Serialization,Json.net,如何让JSON.Net将XML序列化为驼峰式JSON,而不使用“@” 这是我目前拥有的,但它在属性前面加了@,而不是camel case XmlDocument doc = new XmlDocument(); doc.LoadXml(myXmlString); string jsonText = Newtonsoft.Json.JsonConvert.SerializeObject(doc, new JsonSerializerSettings() { NullValueHandli

如何让JSON.Net将XML序列化为驼峰式JSON,而不使用“@”

这是我目前拥有的,但它在属性前面加了@,而不是camel case

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); 
更新:

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

  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 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); 
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented; 
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();