A co jeśli masz <test attrib="moretest" content="foo">bar</test>?
wchargin
1
UWAGA: XML.toJSONObject () org.json również poprawnie konwertuje listy xml na tablice json (w przeciwieństwie do XmlMappera Jacksona, który domyślnie po cichu połyka).
Agoston Horvath,
58
Aby przekonwertować plik XML na format JSON, należy uwzględnić następującą zależność
użyj wersji json wspomnianej w poście, jeśli korzystasz z java 7, ponieważ najnowsza wersja generuje dziwne błędy.
urug
Jeśli masz prawidłowy plik dtd dla fragmentu kodu xml, możesz łatwo przekonwertować xml na json i json na xml za pomocą pliku jar linku eclipse open source. Szczegółowy przykładowy projekt JAVA można znaleźć tutaj: cubicrace.com/2015/06/How-to-convert-XML-to-JSON-format.html
Piyush Chordia
Musiałem skopiować cały pakiet JSON do mojego projektu i zmienić nazwę pakietu. Dodanie do gradle daje ostrzeżenie o zduplikowanym pakiecie z Androida podczas kompilacji.
codelearner
28
Jedyny problem z JSON w Javie polega na tym, że jeśli twój XML ma jedno dziecko, ale jest tablicą, przekonwertuje go na obiekt zamiast tablicy. Może to powodować problemy, jeśli zawsze dynamicznie konwertujesz z XML do JSON, gdzie jeśli przykładowy XML ma tylko jeden element, zwracasz obiekt, ale jeśli ma 2+, zwracasz tablicę, co może powodować problemy z analizowaniem dla osób używających funkcji JSON.
Klasa XML2JSON firmy Infoscoop umożliwia oznaczanie elementów, które są tablicami przed wykonaniem konwersji, dzięki czemu tablice mogą być poprawnie odwzorowane, nawet jeśli w XML jest tylko jedno dziecko.
Oto przykład jego użycia (w nieco innym języku, ale możesz również zobaczyć, jak używane są tablice z metody nodelist2json () linku XML2JSON).
używamy biblioteki „xml-to-json” w Pythonie i jest to problem semantyczny. Aby rozwiązać ten problem „tablica lub obiekt”, piszemy metodę „tryConvertToArray ()”, która zwraca tablicę zawierającą pojedynczy obiekt. Więc zawsze możesz ufać swojej wartości jako tablicy
kommradHomer
Nie jest dla mnie jasne, jak to rozwiązuje problem. Czy po prostu uczynisz wszystko tablicą zamiast obiektem? Np. Jeśli mam XML <results><result><value>1</value></result></results>, czy wygeneruje { "results" : { "result" : { "value" : "1" } } } lub { "results" : [ { "result" : { "value" : "1" } } ] }
Marcus
Jest coś, czego oczekujemy, że będzie to tablica. Problem pojawia się, gdy ta tablica ma tylko 1 element, co czyni ją obiektem dla konwertera xml-to-json. Tak więc, ponieważ spodziewamy się, że będzie to tablica nawet dla pojedynczego elementu, sprawdzamy i konwertujemy ją na tablicę, upewniając się, że mamy tablicę, w której oczekujemy tablicy.
kommradHomer
Ale jak można się spodziewać, że określony element będzie tablicą? XML2JSON oznacza elementy. Nie jest jasne, jak oczekiwać, że będzie to tablica bez oznaczania jej tagami, ponieważ w przeciwnym razie nigdy nie wiedziałbyś o pojedynczym elemencie „tablica”.
Marcus
Na przykład istnieje element o nazwie „phonenumbers”. W elemencie „phonenumbers” znajduje się co najmniej jeden element „phonenumber”. Tak więc, gdy istnieje tylko jeden element „phonenumber” w „phonenumbers”, xml2json tworzy obiekt phonenumber, ale tworzę tablicę phonenumber i umieszczam w niej obiekt phonenumber.
Nie wiem, jaki jest twój dokładny problem, ale jeśli otrzymujesz XML i chcesz zwrócić JSON (lub coś takiego), możesz również spojrzeć na JAX-B. Jest to standard krosowania / cofania kodu POJO Java do XML i / lub Json. Istnieje wiele bibliotek, które implementują JAX-B, na przykład CXF Apache.
import net.sf.json.JSONObject;
lubimport org.json.JSONObject;
. Który słoik muszę dołączyć?Odpowiedzi:
JSON w Javie ma świetne zasoby.
Zależność Mavena:
XML.java
to klasa, której szukasz:Wynik to:
źródło
import net.sf.json.JSONObject;
lubimport org.json.JSONObject;
. Który słoik muszę dołączyć?<test attrib="moretest" content="foo">bar</test>
?Aby przekonwertować plik XML na format JSON, należy uwzględnić następującą zależność
i możesz pobrać Jar z repozytorium Maven tutaj . Następnie zaimplementuj jako:
źródło
Jedyny problem z JSON w Javie polega na tym, że jeśli twój XML ma jedno dziecko, ale jest tablicą, przekonwertuje go na obiekt zamiast tablicy. Może to powodować problemy, jeśli zawsze dynamicznie konwertujesz z XML do JSON, gdzie jeśli przykładowy XML ma tylko jeden element, zwracasz obiekt, ale jeśli ma 2+, zwracasz tablicę, co może powodować problemy z analizowaniem dla osób używających funkcji JSON.
Klasa XML2JSON firmy Infoscoop umożliwia oznaczanie elementów, które są tablicami przed wykonaniem konwersji, dzięki czemu tablice mogą być poprawnie odwzorowane, nawet jeśli w XML jest tylko jedno dziecko.
Oto przykład jego użycia (w nieco innym języku, ale możesz również zobaczyć, jak używane są tablice z metody nodelist2json () linku XML2JSON).
źródło
<results><result><value>1</value></result></results>
, czy wygeneruje{ "results" : { "result" : { "value" : "1" } } }
lub{ "results" : [ { "result" : { "value" : "1" } } ] }
Wgrałem projekt, który możesz bezpośrednio otworzyć w eclipse i uruchomić to wszystko https://github.com/pareshmutha/XMLToJsonConverterUsingJAVA
Dziękuję Ci
źródło
Znalazłem to w szybki i łatwy sposób: Używany:
org.json.XML
klasa z java-json.jarźródło
Nie wiem, jaki jest twój dokładny problem, ale jeśli otrzymujesz XML i chcesz zwrócić JSON (lub coś takiego), możesz również spojrzeć na JAX-B. Jest to standard krosowania / cofania kodu POJO Java do XML i / lub Json. Istnieje wiele bibliotek, które implementują JAX-B, na przykład CXF Apache.
źródło