Saya mencoba menentukan cara mengakses data yang ada di JObject saya dan saya tidak bisa seumur hidup saya menentukan cara menggunakannya.
JObject Object = (JObject)Response.Data["my_key"];
Saya dapat mencetaknya ke konsol dengan melakukan Console.WriteLine (Object) dan saya melihat datanya, terlihat seperti:
{
"my_data" : "more of my string data"
...
}
Tapi saya TIDAK tahu bagaimana cara mengulang / menghitungnya, ada yang punya ide? Saya bingung sekarang.
((IEnumerable<KeyValuePair<string, JToken>>)obj).Select(...)
bukan polos-tuaobj.Select(...)
; atau setidaknya itulah yang saya temukan sebagai salah satu bagian dari kode saya.obj
memiliki tipeJObject
; tetapiJObject
tampaknya memiliki masalah yang mirip dengandynamic
. Kompilator tidak dapat menyimpulkan argumen type ke.Select
. Saya dapat memberikannya secara eksplisit,obj.Select<KeyValuePair<string, JToken>, (result type)>(...)
juga bekerja untuk sayaJObject
mengimplementasikan keduanyaIEnumerable<KeyValuePair<string, JToken>>
danIEnumerable<JToken>
(secara tidak langsung melaluiJContainer
).JToken value
untuk mengulang melalui kumpulan pasangan berikutnya?JObjects dapat dihitung melalui objek JProperty dengan mentransmisikannya ke JToken :
Jika Anda memiliki JObject bersarang di dalam JObject lain, Anda tidak perlu melakukan transmisi karena pengakses akan mengembalikan JToken:
sumber
obj.Properties().Select(p => p.Name + ": " + p.Value)
.Jawabannya tidak berhasil untuk saya. Saya tidak tahu bagaimana itu mendapat begitu banyak suara. Meskipun itu membantu mengarahkan saya ke suatu arah.
Ini adalah jawaban yang berhasil untuk saya:
sumber
Bagi orang-orang seperti saya, pecandu linq , dan berdasarkan jawaban svick , berikut pendekatan linq:
Sekarang Anda dapat membuat ekspresi linq seperti:
Atau hanya:
Atau yang ini untuk mengulang semua data:
sumber