Wpis użytkownika unxtres w Programowanie
unxtresDebiutant
4piorunówrobie okienkowe gui do api i elegancko zapytanie mi zwraca jsona potem robie obiekt:
var data = (JObject)JsonConvert.DeserializeObject(json);
i jak potrzebuje jakiś value to pobieram go sobie przez np.
jakisValue = data["Key"].Value<string>();
no i elegancko, ale kurde nie wiem jak mam wyciągnąc value z klucza który jest w drugim poziomie np:
json = @”{
“”FirstName””:””Aditya””,
“”MiddleName””:””Ashok””,
“”LastName””:””Somwanshi””,
“”Phone””:[“”9004802526″”,””34304235″”],
“”Address””:{“”Primary””:””Panvel””, “”Secondary””:””Cloudfronts””}
}”
i z tego chciał bym wyciagnać np. secondary address.
Komentarze (6)
@Krushynka w js to nie wiem czy można silnie typowane klasy, no chyba że jakiś typescript
ale na js się nie znam za dużo, ja to dotnetowiec ( ͡~ ͜ʖ ͡°)
@JuanPabloSegundo a w js można to zrobić za pomocą lodasha na przykład? Orientujesz się może?
@Dissociated @JuanPabloSegundo
Dzięki chłopaki. Właśnie czytałem o tym i ciężko mi było to zrozumieć. Ucze się na bieżąco piszac kod, a nie tylko teoria. Do tego praca i człowiek trochę rozkojarzony. Szkoda ze nie ma czasem kogo zapytać bezpośrednio o jakiś szczegół, było by łatwiej 😉
@unxtres w c# możesz sobie łatwo tego jsona deserializować w klasę i elegancko wyciągać przez linq albo nawet propertki.
z tego co wkleiłeś to klaska by wyglądała mniej więcej tak:
public class Address
{
public string Primary { get; set; }
public string Secondary { get; set; }
}
public class Response
{
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public List<string> Phone { get; set; }
public Address Address { get; set; }
}
I teras sobie elegancko castujesz
var myDeserializedClass = JsonConvert.DeserializeObject<Response>(json);
i potem ładnie wyciągasz
var secondaryAddress = myDeserializedClass.Address.Secondary;
oczywiście jeśli nie zawsze te wszystkie wartości przychodzą to musisz zadbać o nulle i jakieś walidacje ale na start nic lepszego nie znajdziesz
@unxtres Wrzuć sobie jsona do jakiejś stronki co przerabia jsona na c# klasy np tutaj https://json2csharp.com
Potem robisz deserializację i wyciągasz to co potrzebujesz
https://www.newtonsoft.com/json/help/html/queryinglinqtojson.htm ja bym użył linq (nie umiem w c#)
Querying JSON with LINQLINQ to JSON provides a number of methods for getting data from its objects. The index methods on JObject/JArray let you quickly get data by its property name on an object or index in a collection, while M:Newtonsoft.Json.Linq.JToken.www.newtonsoft.com