Я пытаюсь написать документ JSon и его относительный xsd-файл, чтобы генерировать классы JAXB, и я не думаю, что если я делаю это правильно. то, что я хочу, это структура, как это:массив массивов JSon
team
-name="name"
-game="game"
-intarray
int
int
...
int
-values
[int1, int2]
[int1, int2]
...
[int1, int2]
-stringarrays
[string1, string2,...., stringn]
[string1, string2,...., stringn]
...
[string1, string2,...., stringn]
поэтому я написал мой XSD и пример строки в файле JSON, чтобы попытаться прочитать его
example line:
{"name": "Team 1", "game": "game", "intarray": [1, 2, 3, 4, 5, 6], "values": [[10,20], [10,80], [10,30], [10,60], [10,50], [10,30]], "stringarrays": [["Azione", "Azione"], ["Azione", "Azione"], ["Azione", "Azione"], ["Azione", "Azione"], ["Azione", "Azione"], ["Azione", "Azione"]]}
и это мой XSD
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/teams" xmlns:tns="http://www.example.org/teams" elementFormDefault="qualified">
<element name="team_list" type="tns:lista_team"></element>
<complexType name="team">
<sequence>
<element name="name" type="string"></element>
<element name="game" type="string"></element>
<element name="intarray" type="int" maxOccurs="unbounded"
minOccurs="0">
</element>
<element name="values" type="tns:ivev"></element>
<element name="stringarrays" type="tns:arrays"></element>
</sequence>
</complexType>
<complexType name="ivev">
<sequence>
<element name="couple" type="tns:ivev_couple" maxOccurs="unbounded" minOccurs="0"></element>
</sequence>
</complexType>
<complexType name="ivev_couple">
<sequence>
<element name="ivev_element" type="int" maxOccurs="unbounded" minOccurs="1"></element>
</sequence>
</complexType>
<complexType name="moveset">
<sequence>
<element name="mosse" type="string" maxOccurs="unbounded" minOccurs="0"></element>
</sequence>
</complexType>
<complexType name="arrays">
<sequence>
<element name="stringarray" type="tns:moveset" maxOccurs="unbounded" minOccurs="0"></element>
</sequence>
</complexType>
<complexType name="lista_team">
<sequence>
<element name="squadra" type="tns:team" maxOccurs="unbounded" minOccurs="0"></element>
</sequence>
</complexType>
затмение продолжает говорить мне, что у меня есть MalformedJson, я Тхи пк проблема с JSon линии, я думаю, что XSD почти правильно, но я могу ошибаться :)
Код, который пишет документ JSON выглядит следующим образом:
Gson gson = new Gson();
String json = gson.toJson(team);
try
{
FileWriter gwriter = new FileWriter("c:\\file.json");
gwriter.write(json);
gwriter.close();
}
catch(Exception e)
{
}
Который производит этот JSON документ:
{
"nome":"team1",
"game":"game",
"intarray":[1,2],
"arrayofintarrays":{
"couple":[]
},
"arrayofstringarrays":{
"mossearray":[]
}
}
Этот документ JSON затем считывают с так:
Team[] teams_loaded= null;
try
{
Reader reader = new InputStreamReader(DexLoader.class.getClassLoader().getResourceAsStream("teams.txt"));
Gson gson = new GsonBuilder().create();
JsonReader read = new JsonReader(reader);
teams_loaded = gson.fromJson(read, Team[].class);
}
catch(Exception c)
{
c.printStackTrace();
}
спасибо!
В стороне, не проще ли просто написать код Java, а не XSD, а затем сгенерировать код Java из него? –
Я новичок в JSon, единственная попытка, которую я сделал для чтения JSon-файла, - это готовый и хорошо сделанный json-документ, я смог быстро генерировать классы и использовать их на eclipse, поэтому я подумал, что это лучший способ для продолжения – user3252485
JSON в порядке, я могу разобрать его с помощью Java JSON API (javax.json: javax.json-api: 1.0 и org.glassfish: javax.json: 1.0.4). Какой API вы используете и каково исключение (включая стек), которое вы видите? Я предполагаю, что вы используете API GSON и что классы, созданные с вашего XSD, не соответствуют JSON. –