C# szukam prostej w obsludze biblioteki json


#1

tak jak w temacie :D, próbuje sił w c# System.json który jest nieco toporny przy próbie generowania obiektów Json"" (Utf8JsonWriter), do tej pory korzystałem z Java Gson i tam wszystko prosto i fajnie opierało się na obiektach JsonElement, tutaj tak kolorowo nie jest :/, dodatkowo automatyczna serializacja/deserializacja nie obsługuje polimorfizmu. nie był by to duży problem gdyby łatwiej było obsługiwać ręczną serializacje.

szukam darmowej (bo jak że by inaczej) biblioteki json pod C#, najlepiej prostej(jak najbardziej idiotoodpornej, fajnie by było gdyby było coś podobnego do gson) jak się nie uda to będę walczył z tym co mam


#2

To kombajn, czy prosta to nie wiem, zależy jak dobrze umiesz czytać dokumentacje. Ja używam jej od lat we wszystkich projektach.


#3

biblioteka raczej podobna w użyciu do System.json , chciałem z niej skorzystać ale coś mi się ubzdurało że jest płatna (dodatek do niej jest płatny, ale sam rdzeń json już nie),
jednak nadal chodziło mi coś bardziej obiektowego :smiley: jeśli takie słowo w ogóle istnieje w c#


#4

Jak ‘bardziej obiektowego’?
Wszystko co dotąd potrzebowałem zrobić z JSONami dało się zrobić za pomocą tej biblioteki. Nie znam lepszej.


#5

wszystko co tam masz jest reprezentowane przez jeden obiekt do zapisu odczytu,
w Gson wszystkie dane są zapisane w obiekcie< drzewku obiektów.
nie pisze że się czegoś nie da, ale jestem przyzwyczajony robić to trochę inaczej jak tutaj
https://www.javadoc.io/doc/com.google.code.gson/gson/2.8.5/com/google/gson/JsonElement.html


#6

Przykro mi, nie umiem ci pomóc :wink:


#7

jak to nie pomogłeś. z początku sam szukałem jakiejś lib, i znalazłem tą z newtonsoft, tylko że byłem przekonany że jest płatna, tak więc nie miałem ochoty z niej korzystać (już walałbym zrobić własny zapis do byte[] <tylko że tutaj miałbym problem z debugiem zapisanych informacji)
mimo wszystko biblioteka jest wręcz identyczna z System.json na której z początku bazowałem, więc nie powinienem mieć z nią większych problemów,

może ktoś zna jakąś inną


#8

Może chcesz bardziej tutoriala do Newtonsoftowego Jsona

Tego liba używałem produkcyjnie i Microsoft też go używał… jest w porządku

Napisz co chcesz zrobić to może będzie prościej…

Polimorfizmu nie ma w JSONie bo koncept się nie klei.
Json to potencjalnie zagnieżdżone

  • słowniki
  • tablice
  • pola

nie otypowane. Liście są jest napisami, jak wartość jest trywialną liczbą może być wpisana bez “”.
Żeby tu mieć jakąś serializację z polimorfizmem musisz dopisać pole z nazwą klasy.
Ja coś takiego robiłem deserializując ręcznie JToken:

Może ktoś to opakował w bibliotekę albo da się jakoś skonfigurować newtonsofta ale nie miałem potrzeby w moim projekcie bo mało tego było i ręczny wybór klasy wystarczał. Plus z perspektywy bezpieczeństwa lepiej kontrolować typ niż pozwalać na tworzenie dziwnych obiektów.


#9

zrobiłem zapis za pomocą newtonsoft, tak że po chamsku wstawiam w parametr obiekt który chcę serializować a a cała reszta dzieje się automatycznie, poprzez wygenerowane schematy, które obsługują polimorfizm (schemat generuje się podczas rejestracji klasy > wymagane przy deserializacji) bądź przy serializacji jeśli schematy nie istnieje), całość działa na Jsonreader/JsonWriter
takie rozwiązanie ma jedna ogromną zaletę, działa automatycznie (z drobnymi wyjątkami) , jest proste i przejrzyste

:D, fajno że jest coś podobnego do Java JsonObject
https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_Linq_JObject.htm
ale trochę za późno :smiley: