簡體   English   中英

在JAXB中將JSON對象轉換為字符串

[英]Converting JSON object to string in JAXB

正在編寫一個將產生JSON和XML響應的Web服務端點。 在這里,我想將一個對象轉換為JSON並將其設置為字符串。 當我嘗試使用以下代碼

Web服務端點

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"
            }

預期的字符串值

    [{"id":"ID1","value":"1"},{"id":"ID2","value":"2"},{"id":"ID3","value":"3"}]

我的問題是,為什么轉換為String的JSONArray在每個鍵值對上都包含“ \\”。 有什么辦法可以克服這個問題?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM