我从字符串中的REST API接收GET请求响应。收到后,它看起来像这样:
[
{\"passport_expiration\": \"2019-09-14\", \"first_name\": \"asdfasdf\", \"last_name\": \"asdfasdf\", \"cass_status\": \"APPROVED\", \"notes\": null, \"kcm_status\": \"DENIED\", \"employment_type\": \"flight_deck\", \"employee_id\": \"10556\", \"passport_id\": \"12341234\"},
{\"passport_expiration\": \"2026-01-04\", \"first_name\": \"asdfasdf\", \"last_name\": \"asdfasdf\", \"cass_status\": \"APPROVED\", \"notes\": null, \"kcm_status\": \"DENIED\", \"employment_type\": \"flight_deck\", \"employee_id\": \"10557\", \"passport_id\": \"12341234\"},
{\"passport_expiration\": \"2026-08-31\", \"first_name\": \"asdfasdf\", \"last_name\": \"MC asdfasdf\", \"cass_status\": \"APPROVED\", \"notes\": null, \"kcm_status\": \"DENIED\", \"employment_type\": \"flight_deck\", \"employee_id\": \"10598\", \"passport_id\": \"12341234\"}
]
当我将其反序列化为动态时:
dynamic dsCrew = JsonConvert.DeserializeObject(responseText);
dsCrew包含:
{[
{
"passport_expiration": "2026-08-31",
"first_name": "asdfasdf",
"last_name": "MC asdfasdf",
"cass_status": "APPROVED",
"notes": null,
"kcm_status": "DENIED",
"employment_type": "flight_deck",
"employee_id": "10598",
"passport_id": "12341234"
},
{
"passport_expiration": "2026-11-16",
"first_name": "asdfasdf",
"last_name": "BLasdf",
"cass_status": "APPROVED",
"notes": null,
"kcm_status": "DENIED",
"employment_type": "flight_deck",
"employee_id": "14798",
"passport_id": "12341234"
},
{
"passport_expiration": "2025-05-05",
"first_name": "sadfasdf",
"last_name": "asdf",
"cass_status": "APPROVED",
"notes": "",
"kcm_status": "DENIED",
"employment_type": "flight_deck",
"employee_id": "14838",
"passport_id": "12341234"
}
]}
它似乎只是简单地删除了转义字符,将一些空值转换为空字符串,并将整个事物包装在另外一组花括号中。这就像它反序列化为一种不同的序列化格式。
在其他SO问题中,答案建议创建一个类以反序列化为:
Deserialised_Crew dsCrew = JsonConvert.DeserializeObject<Deserialised_Crew>(responseText);
但是当我这样做时,我得到一个例外:
“无法将当前JSON数组(例如[1,2,3])反序列化为类型'CASS_KCM_Update.Deserialised_Crew',因为该类型需要JSON对象(例如{\”name \“:\”value \“})正确地反序列化。
JsonConvert.DeserializeObject()似乎认为responseText不是有效的JSON。 JSONLint.com说JSON是有效的。
我需要一种方法来引用特定的数据:
dsCrew[0].last_name
似乎引用方括号内的整个文本。而且我找不到任何方法来提及任何更具体的特异性。 dsCrew[0][1].last_name
无效。 dsCrew[0](1).last_name
已经出局了。
我需要一种方法来引用此响应中的名称和employee_id。我对JSON比较陌生。
答案 0 :(得分:1)
第一个问题可能正是您在调试器中看到的问题。该代码应该没问题。
你的第二个问题只涉及反序列化到一个数组,因为JSON对象是一个数组:
child(uid)
从那时起,您的代码Image
应该按预期工作。