Я новичок в Jil.JSON. Я использую «JSON.DeserializeDynamic», потому что строка «JSON» всегда варьируется в зависимости от требований клиента.
В моем коде я использую «foreach». «keyValue» - это динамическое свойство со свойствами «Key» и «Value».
Я пытаюсь получить значения «keyValue.Value Type» и «keyValue.Value StringValue», но не знаю, как это сделать. получить значения этих непубличных членов.
необходимо получить Type и StringValue
Вот пример моего кода:
string json = "{\"Items\":[{ \"Name\":\"Ballpen\", \"Price\":12.3 },{ \"Name\":\"Pencil\", \"Price\":3.21 }],\"Date\":\"21112019\"}";
using (var str = new StringReader(json ))
{
foreach (var keyValue in JSON.DeserializeDynamic(@str, Jil.Options.IncludeInherited))
{
//check the keyValue.Value Type
//if keyValue.Value Type is string, get the StringValue
};
}
Я пытался использовать keyValue.GetType (), но он дает мне другие свойства.
Отредактировано:
Я почти на месте ....
json = "{\"Items\":[{ \"Name\":\"Ballpen\", \"Price\":12.3 },{ \"Name\":\"Pencil\", \"Price\":3.21 }],\"Date\":\"21112019\"}";
Dictionary<string, object> la = JSON.Deserialize<Dictionary<string, object>>(json);
foreach (var data in la)
{
Console.WriteLine("Key=" + data.Key);
Console.WriteLine("Value=" + data.Value.ToString());
Type t = data.Value.GetType();
MemberInfo[] members = t.GetMembers(BindingFlags.NonPublic |
BindingFlags.Instance);
foreach (MemberInfo member in members)
{
if(member.Name == "Type")
{
Console.WriteLine(member.Name);
//member.MemberType.GetType();
}
if (member.Name == "StringValue")
{
Console.WriteLine(member.Name);
}
}
}
Key=Items
Value=[{
"Name": "Ballpen",
"Price": 12.3
}, {
"Name": "Pencil",
"Price": 3.21
}]
Type
StringValue
Key=Date
Value="21112019"
Type
StringValue
Теперь мне нужно получить 'значение члена'
Есть идеи?