Zrób model danych XML
przykładowy
public class MyClass
{
[JsonProperty("@SomeXMLProperty")]
public string MyString{ get; set; }
}
następnie przekształcić XML do swojego modelu
XDocument xmlDocument = XDocument.Parse(xmlData);
string jsonData = JsonConvert.SerializeXNode(xmlDocument);
var myClass = JsonConvert.DeserializeObject<MyClass>(jsonData);
następnie wystarczy użyć CamelCasePropertyNamesContractResolver i Formatting.Indented
string json = JsonConvert.SerializeObject(rootObject,
Newtonsoft.Json.Formatting.Indented,
new JsonSerializerSettings { ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver() });
UPDATE:
Pierwsze rozwiązanie jest proste i czyste (nie trzeba pisać własne resolwera itd) jest to po prostu dla usuwanie @ znak
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);
Jeśli ktoś wie, być rozwiązanie ttera dla obu przypadków, to najpierw byłoby miło spojrzeć na to.
dodatek WebAPI
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
mówisz do Serializować następnie deserializowania następnie Serializować ponownie? – Homer
Tak, pierwsze rozwiązanie jest najczystsze. Czy używasz WebAPI i potrzebujesz wielbłąda? Jeśli tak, to tylko dwie linie. –