Попытка преобразовать строку json в пары значений ключа с помощью Newtonsoft, но пока безуспешно.
Ответ от API:
var response = @"{'result':{'0199 - B344EE33':
{
'6400_00260100':{'1':[{'val':336688}]},
'6400_00462500':{'1':[{'val':null}]},
'6800_00832A00':{'1':[{'low':3000,'high':3000,'val':3000}]},
'6800_008AA200':{'1':[{'low':0,'high':null,'val':0}]}
}}}";
Результат, который я хочу, - это новый объект пар ключ-значение:
{
"6400_00260100" : 336688,
"6400_00462500" : null,
"6800_00832A00" : 3000,
"6800_008AA200" : 0
}
В ответе result
всегда будет первой и единственной опорой. На следующем уровне код 0199 - B344EE33
может измениться, но на этом уровне будет только одна опора, поэтому мы всегда можем выбрать первую. Затем на последнем уровне нам всегда нужно свойство val
.
У меня есть следующее, но для получения пар ключ-значение в чистом виде я застрял:
var json = JObject.Parse(response);
var result = json["result"].First;
var path = result.Path;
ОБНОВЛЕНИЕ
var jObjectResult = new JObject();
var response = @"{'result':{'0199 - B344EE33':
{
'6800_10821E00':{'1':[{'val':'SMA Sunny Boy'}]},
'6800_00A21E00':{'1':[{'val':'3.0.0.2222'}]},
'6800_00823400':{'1':[{'low':3000,'high':3000,'val':3000}]},
'6800_08822B00':{'1':[{'val':'SMA'}]},
'6800_08822000':{'1':[{'val':'Sunny Boy 3.0'}]}
}}}";
var json = JObject.Parse(response);
var json_serial = json["result"].First.Children<JObject>().ToList()[0];
foreach(var token in json_serial)
{
var tokenKey = token.Key;
var tokenVal = token.Value.SelectToken("$.1[0].val");
jObjectResult.Add(tokenKey, tokenVal);
}