Deserializacja fragmentu json'a

0

Cześć,

Czy jest jakiś sprytny sposób na deserializację części jsona?

mam taki plik

{
"column-names":[
  “Column”1,
  “Column”],
"rows":[
{
  “row1”:”15",
  “row2:”11"
}]}

Plik otrzymuję z zewnątrz i nie mam wpływu na to, że tak wygląda. Muszę z niego wyciągnąć tylko zawartość rows. tzn chciałbym mieć taki obiekt docelowo

class MyObj
{
  string Row1;
  string Row2;
};

Na tą chwilę przychodzi mi pomysł żeby deserializować całego jsona i zmapować po prostu pola, które mnie interesują do docelowego obiektu.

Jak Wy rozwiązalibyście takie zagadnienie?

3

Jak nie chcesz mapować całego obiektu tylko coś wyciągnąć ze środka od razu i to zmapować to możesz zrobić np. tak:

var json = "{ \"column-names\": [ \"Column1\", \"Column2\" ], \"rows\": [ { \"row1\": \"15\", \"row2\": \"11\" } ]}";
var obj = JObject.Parse(json)["rows"].ToObject<List<MyObj>>();
	
class MyObj
{
  	public string Row1 {get;set;}
  	public string Row2 {get;set;}
}; 
0
Saalin napisał(a):

Jak nie chcesz mapować całego obiektu tylko coś wyciągnąć ze środka od razu i to zmapować to możesz zrobić np. tak:

var json = "{ \"column-names\": [ \"Column1\", \"Column2\" ], \"rows\": [ { \"row1\": \"15\", \"row2\": \"11\" } ]}";
var obj = JObject.Parse(json)["rows"].ToObject<List<MyObj>>();
	
class MyObj
{
  	public string Row1 {get;set;}
  	public string Row2 {get;set;}
}; 

ok, a jak przygotować obiekt jak nazwy pól w json'ie są długie i połączone myślnikami np. some-property-xyz, nie mogę tak nazwać property w klasie DTO

0
Artur9000 napisał(a):
Saalin napisał(a):

Jak nie chcesz mapować całego obiektu tylko coś wyciągnąć ze środka od razu i to zmapować to możesz zrobić np. tak:

var json = "{ \"column-names\": [ \"Column1\", \"Column2\" ], \"rows\": [ { \"row1\": \"15\", \"row2\": \"11\" } ]}";
var obj = JObject.Parse(json)["rows"].ToObject<List<MyObj>>();
	
class MyObj
{
  	public string Row1 {get;set;}
  	public string Row2 {get;set;}
}; 

ok, a jak przygotować obiekt jak nazwy pól w json'ie są długie i połączone myślnikami np. some-property-xyz, nie mogę tak nazwać property w klasie DT\

powiedzmy, że nasze some-property-xyz to Row1

zrobiłem tak:

var obj = JsonConvert.DeserializeObject<RowDto>(responseContent);

a klasa DTO

    public class RowDto
    {
        [JsonProperty("some-property-xyz")]
        public string SomePropertyXyz { get; set; }
    }

ale niestety nie mapuje się nic, czy problem nie jest taki, że some-property-xyz jest w "Rows"?

1 użytkowników online, w tym zalogowanych: 0, gości: 1