Я использую WSDL-сервис в моем проекте, и возвращается ответ XML. для моего приложения мне нужно передать ответ в формате JSON. Здесь используется каркас с пружинной загрузкой. Язык кодирования шпунтовой
Я пытался преобразовать xml в Json, но ответ не нужен.
Ответ мыла от WSDL
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<RESP xmlns="http://xmlns.oracle.com/Enterprise/Tools/schemas/RESP">
<Data>
<Resp_Data>
<ID >123456789</ID>
<Name >Downey jr,Robert John</Name>
<LastName >Downey jr</LastName>
<FirstName >Robert</FirstName>
<MiddleName >John</MiddleName>
<Movies>
<MName>Sherlock Homes</MName>
<Year>2009</Year>
<Length>2h 8m</Length>
<BoxOffice>$208,711,166</BoxOffice>
<Ratings>
<ImdbRaring>7.6</ImdbRaring>
<RottenTomatoes>70%</RottenTomatoes>
</Ratings>
<Movies>
<Movies>
<MName>Iron Man</MName>
<Year>2008</Year>
<Length>2h 6m</Length>
<BoxOffice>$318,298,180</BoxOffice>
<Ratings>
<ImdbRaring>7.9</ImdbRaring>
<RottenTomatoes>93%</RottenTomatoes>
</Ratings>
<Movies>
<Movies>
<MName>Iron Man2</MName>
<Year>2008</Year>
<Length>2h 4m</Length>
<BoxOffice>$312,057,433</BoxOffice>
<Ratings>
<ImdbRaring>7.0</ImdbRaring>
<RottenTomatoes>73%</RottenTomatoes>
</Ratings>
<Movies>
</Resp_Data>
</Data>
<RESP>
</soapenv:Body>
</soapenv:Envelope>
Я пытался работать с XML.toJSONObject (xmlString), и преобразованный ответ Json равен
{
"Envelope": {
"Body": {
"RESP": {
"Data": {
"Resp_Data": {
"ID": "123456789",
"Name": "Downey jr,Robert John",
"LastName": "Downey jr",
"FirstName": "Robert",
"MiddleName": "John",
"Movies": [
{
"MName": "Sherlock Homes",
"Year": "2009",
"Length": "2h 8m",
"BoxOffice": "$208,711,166",
"Ratings": {
"ImdbRaring": "7.6",
"RottenTomatoes": "70%"
}
},
{
"MName": "Iron Man",
"Year": "2008",
"Length": "2h 6m",
"BoxOffice": "$318,298,180",
"Ratings": {
"ImdbRaring": "7.9",
"RottenTomatoes": "93%"
}
},
{
"MName": "Iron Man2",
"Year": "2008",
"Length": "2h 4m",
"BoxOffice": "$312,057,433",
"Ratings": {
"ImdbRaring": "7.0",
"RottenTomatoes": "73%"
}
}
]
}
},
"_xmlns": "http://xmlns.oracle.com/Enterprise/Tools/schemas/RESP"
},
"__prefix": "soapenv"
},
"_xmlns:soapenv": "http://schemas.xmlsoap.org/soap/envelope/",
"_xmlns:soapenc": "http://schemas.xmlsoap.org/soap/encoding/",
"_xmlns:xsd": "http://www.w3.org/2001/XMLSchema",
"_xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
"__prefix": "soapenv"
}
}
Также я попытался использовать Json Builder от groovy для анализа XML и создания Json-формы. Ниже приведен код
def responseXML = new XmlSlurper().parseText(xmlString)
def builder = new groovy.json.JsonBuilder()
builder {
responseXML.Body.RESP.Data.Resp_Data.each { nodeElem ->
nodeElem.childNodes().each { childElem ->
"$childElem.name" childElem.text()
}
}
}
и ответ Json, который я получаю, -
{
"ID": "123456789",
"Name": "Downey jr,Robert John",
"LastName": "Downey jr",
"FirstName": "Robert",
"MiddleName": "John",
"W_CHKLST_WS_REC": "Sherlock Homes 2009 2h 8m $208,711,166 7.6 70% Iron Man 2008 2h 6m $318,298,180 7.9 93% Iron Man2 2008 2h 4m $312,057,433 7.0 73%"
}
Я пытаюсь получить ответ Джсона как
{
"ID": "123456789",
"Name": "Downey jr,Robert John",
"LastName": "Downey jr",
"FirstName": "Robert",
"MiddleName": "John",
"Movies": [
{
"MName": "Sherlock Homes",
"Year": "2009",
"Length": "2h 8m",
"BoxOffice": "$208,711,166",
"Ratings": {
"ImdbRaring": "7.6",
"RottenTomatoes": "70%"
}
},
{
"MName": "Iron Man",
"Year": "2008",
"Length": "2h 6m",
"BoxOffice": "$318,298,180",
"Ratings": {
"ImdbRaring": "7.9",
"RottenTomatoes": "93%"
}
},
{
"MName": "Iron Man2",
"Year": "2008",
"Length": "2h 4m",
"BoxOffice": "$312,057,433",
"Ratings": {
"ImdbRaring": "7.0",
"RottenTomatoes": "73%"
}
}
]
}