Я борюсь с предметом, который имеет много вариантов в этом форуме, но я не могу найти подходящий для меня вариант, и я думаю, что это из-за того, что мой JSON массив :(Я не эксперт, но мне уже удается «почти» получить конец .. Мне нужно получить значение «Status» и «listOfCredDetails».Как десериализовать массив JSON в C#
My 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», чтобы одновременно возвращать как статус (объект), так и ListofCredDetails (объект).
Может ли кто-нибудь помочь мне понять, как я могу достичь этого, я попробовал некоторые, как показано ниже, для десериализации и получения данных 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