Mam JSON danych, które wygląda tak:Przetwarzanie przez JSON w Json.NET z nieznanymi nazwami własności
{
"response":{
"_token":"StringValue",
"code":"OK",
"user":{
"userid":"2630944",
"firstname":"John",
"lastname":"Doe",
"reference":"999999999",
"guid":"StringValue",
"domainid":"99999",
"username":"jdoe",
"email":"[email protected]",
"passwordquestion":"",
"flags":"0",
"lastlogindate":"2013-02-05T17:54:06.31Z",
"creationdate":"2011-04-15T14:40:07.22Z",
"version":"3753",
"data":{
"aliasname":{
"$value":"John Doe"
},
"smsaddress":{
"$value":"[email protected]"
},
"blti":{
"hideemail":"false",
"hidefullname":"false"
},
"notify":{
"grades":{
"$value":"0"
},
"messages":{
"$value":"1"
}
},
"beta_component_courseplanexpress_1":{
"$value":"true"
}
}
}
}
używam C# z Json.NET analizować poprzez danych. Byłem w stanie z powodzeniem uzyskać dane za pomocą tego algorytmu:
User MyUser = new User();
JToken data = JObject.Parse(json);
MyUser.FirstName = (string) data.SelectToken("response.user.firstname");
//The same for all the other properties.
Problem jest z polem data
. To pole jest oparte głównie na preferencjach użytkownika, a dane są wstawiane tylko wtedy, gdy są używane. Wszystkie pola są niestandardowe, a programiści mogą umieszczać dowolną liczbę bez ograniczeń. Zasadniczo to wszystkie dane w wolnym formularzu. Zauważ, że można je zagnieżdżać naprawdę daleko w danych.
Próbowałem uruchomić:
MyUser.Data = JsonConvert.DeserializeObject<List<JToken>>((string) data.SelectToken("response.user.data");
który nie działa.
Jak byś go przekonwertował, aby był użyty w obiekcie C#?
@KenKin Aktualnie szukam Słownika do przechowywania danych. Pozostałe zmienne składowe są po prostu właściwościami łańcuchowymi, co sprawia, że dostęp do nich za pomocą MyUser.FirstName jest naprawdę łatwy. Pytanie naprawdę koncentruje się na części "danych" JSON, reszta jest czysto tam dla odniesienia. – claydiffrient