2015-01-02 8 views
1

Я пишу конечную точку 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, содержит «\» для каждой пары значений ключа. есть ли способ преодолеть это?

ответ

1

Используйте Jackson или google-gson или любую другую библиотеку. Например http://howtodoinjava.com/2014/06/16/jackson-examples-convert-java-object-to-from-json/

+0

Я думаю, что ссылка, которую вы упомянули, состоит в том, чтобы преобразовать объект java в JSON и JSON в java. Но здесь я получаю ответ JSON от DTO как результат. Преобразует список деталей студента в JSON Array и устанавливает его в строку со значением '[{" id ":" ID1 "," value ":" 1 "}, {" id ":" ID2 "," value ": «2»}, {«id»: «ID3», «значение»: «3»}] 'в класс XML (указано выше). и в качестве ответа веб-службы я получаю ответ JSON класса XML, но значение строки, которая является форматом JSON, добавляется в «\». – Arun

Смежные вопросы