Я пишу конечную точку Webservice, которая будет обрабатывать ответы JSON и XML. Здесь я хотел бы преобразовать объект в JSON и установить его в строку. Когда я пытаюсь сделать с ниже кодПреобразование объекта JSON в строку в JAXB
Webservice Endpoint
package com.test1;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;`
@Path("v1")
public class Impl1 {
@POST
@Path("method")
@Produces({"text/xml","application/json"})
public XML method() throws JSONException
{
//JSONObject obj = new JSONObject();
JSONArray ary = new JSONArray();
Main main = new Main();`
List<Student> details = new ArrayList<Student>() ;
Student s1 = new Student();
Student s2 = new Student();
Student s3 = new Student();
s1.setId("ID1");
s1.setValue("1");
s2.setId("ID2");
s2.setValue("2");
s3.setId("ID3");
s3.setValue("3");
details.add(s1);
details.add(s2);
details.add(s3);
main.setDetails(details);
ary.put(details);
Employee emp = new Employee();
emp.setName("Mike");
emp.setSalary(1000);
XML xml = new XML();
xml.setDetails(ary.toString());
xml.setEmp(emp);
xml.setId("1");
return xml;
}
}
XML class (JAXB)
package com.test1;
import java.util.HashMap;
import java.util.Map;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class XML {
String id;
Employee emp;
String details;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Employee getEmp() {
return emp;
}
public void setEmp(Employee emp) {
this.emp = emp;
}
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}
}
Student Class
package com.test1;
public class Student {
String id;
String Value;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getValue() {
return Value;
}
public void setValue(String value) {
Value = value;
Main Class
package com.test1;
import java.util.List;
public class Main {
List<Student> details;
public List<Student> getDetails() {
return details;
}
public void setDetails(List<Student> details) {
this.details = details;
}
}
Так что, когда я ударил моей службы я получаю ответ, как
{
"details" : "[[{\"id\":\"ID1\",\"value\":\"1\"},{\"id\":\"ID2\",\"value\":\"2\"},{\"id\":\"ID3\",\"value\":\"3\"}]]",
"emp" : {
"name" : "Arun",
"salary" : "1000.0"
},
"id" : "1"
}
Ожидаемое Строка valuse в
[{"id":"ID1","value":"1"},{"id":"ID2","value":"2"},{"id":"ID3","value":"3"}]
Мой вопрос: почему JSONArray, который был преобразован как String, содержит «\» для каждой пары значений ключа. есть ли способ преодолеть это?
Я думаю, что ссылка, которую вы упомянули, состоит в том, чтобы преобразовать объект java в JSON и JSON в java. Но здесь я получаю ответ JSON от DTO как результат. Преобразует список деталей студента в JSON Array и устанавливает его в строку со значением '[{" id ":" ID1 "," value ":" 1 "}, {" id ":" ID2 "," value ": «2»}, {«id»: «ID3», «значение»: «3»}] 'в класс XML (указано выше). и в качестве ответа веб-службы я получаю ответ JSON класса XML, но значение строки, которая является форматом JSON, добавляется в «\». – Arun