Я использую C#, и у меня есть строка xml из базы данных, например:
<ds>
<table>
<user>someuser1</user>
<login>true</login>
</table>
<table>
<user>someuser2</user>
<login>true</login>
</table>
</ds>
Как я могу преобразовать это в JObject или JArray в этот вывод?
[{ user: 'someuser1', login: 'true' }, { user: someuser2, login: 'false'} ]
Я пытаюсь это сделать, но это не то, чего я ожидал.
var x = XElement.Parse(theXml).Elements("table");
var y = JsonConvert.SerializeObject(x);
он получает:
[{ table: {user: ....} }, table: {....}]





Попробуйте этот код:
string xmlRaw = @"<ds>
<table>
<user>someuser1</user>
<login>true</login>
</table>
<table>
<user>someuser2</user>
<login>true</login>
</table>
</ds>";
XmlDocument xml = new XmlDocument();
xml.LoadXml(xmlRaw);
string json = JsonConvert.SerializeXmlNode(xml.SelectSingleNode("/ds"));
int startBracket = json.IndexOf('[');
int length = json.IndexOf(']', startBracket) - startBracket + 1;
json = json.Substring(startBracket, length);
Мое решение:
var elements = XElement.Parse( xml ).Elements( "table" );
var json = JsonConvert.SerializeObject( elements.Select( x => new
{
user = x.Element( "user" ).Value,
login = x.Element( "login" ).Value
} ) );
Этот код дает вам именно ваш массив:
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(theXML);
string json = JsonConvert.SerializeXmlNode(xmlDocument);
JObject jObject = JObject.Parse(json);
JArray jArray = (JArray) jObject.SelectToken("ds.table");