我在這個論壇上有很多變體的主題掙扎,但我似乎無法找到一個適合我的人,我認爲這是因爲我的JSON數組是:(我不是一個專家,但我已經設法「幾乎」得到結束..我需要得到「狀態」和「listOfCredDetails」值的手如何反序列化C#中的JSON數組#
我的JSON(稱爲responseFromServer):
{
"Status": {
"StatusCode":143,
"SubStatus":0,
"Description":"Ok"
},
"ListofCredDetails":
[{
"Client":"a",
"CredID":111,
"CredUserID":"abc"
},
{
"Client":"b",
"CredID":112,
"CredUserID":"def"
},
{
"Client":"c",
"CredID":113,
"CredUserID":"ghi"
}]
}
然後,基於很多在這個論壇上的例子,以點點滴滴我創造了我的班:
[Serializable]
public class StatusReturn
{
public int StatusCode { get; set; }
public int SubStatus { get; set; }
public string Description { get; set; }
}
[Serializable]
public class CredDetailsReturn
{
public string Client{ get; set; }
public int CredID{ get; set; }
public string CredUserID{ get; set; }
}
[Serializable]
public class GetUserCredentialDetailsReturn
{
public StatusReturn status;
public List<CredDetailsReturn> listOfCredDetails;
public GetUserCredentialDetailsReturn()
{
status = new StatusReturn();
listOfCredDetails = new List<CredDetailsReturn>();
}
}
然後我要去反序列化得到
1「狀態」,其內容爲一個對象,並
2.「ListofCredDetails」及其元素的列表到一個對象
,然後爲「GetUserCredentialDetailsReturn」創建對象,以一次返回status(object)和ListofCredDetails(object)。
任何人都可以幫助我理解我該如何實現這個我已經嘗試了一些像下面的反序列化並將Json數據轉換爲兩個單獨的對象。
但它不工作....
public GetUserCredentialDetailsReturn InvokeRequest(RESTInvokeClass objInvoke)
{
...
...
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
string responseText = streamReader.ReadToEnd();
GetUserCredentialDetailsReturn result = new GetUserCredentialDetailsReturn();
result.status = JsonConvert.DeserializeObject<StatusReturn>(responseText);
result.listOfCredDetails = JsonConvert.DeserializeObject<List<CredDetailsReturn>>(responseText);
return result;
}
}
你應該這樣做:'GetUserCredentialDetailsReturn result = JsonConvert.DeserializeObject(responseText)'。並刪除行'result.status = ...'和'result.listOfCredDetails = ...' –
Rob
@ rob ...我不需要完整的JSON來反序列化成一個對象..我需要JSON數據中的「狀態」部分放入一個對象和「ListofCredDetails」(列表)將JSON中的部分數據轉換爲另一個對象.. – Shravan
通常,反序列化完整的JSON文本並訪問所需的元素會簡單得多。否則,如果您確實只需要一些隔離元素,則需要使用JSON庫的較低級別部分:自行分析標記流,跟蹤對象樹並僅返回所需的元素。 – DrKoch