2012-03-13 55 views
1

內使用JAXB鑑於一類是這樣的:渲染JSON字符串作爲JSON球衣

@XmlRootElement 
public class MyClass { 
    private Boolean flag1; 
    private String json; 
    ... 
} 

我可以添加註釋,這將導致JSON成爲渲染JSON的一部分,無需被轉義爲一個字符串?

例如,如果對象flag1=truejson="{"a":5}"我想:的

{"flag":true,"json":{"a":5}} 

代替:

{"flag":true,"json":"{\"a\":5}"} 

回答

0

您可以編寫自己的編組這樣做。

0

您可以使用提供程序更改JSONJAXBContext的默認行爲。見http://jersey.java.net/nonav/documentation/latest/user-guide.html#d4e865

import javax.ws.rs.ext.ContextResolver; 
import javax.ws.rs.ext.Provider; 
import javax.xml.bind.JAXBContext; 
import javax.xml.bind.JAXBException; 

import com.sun.jersey.api.json.JSONConfiguration; 
import com.sun.jersey.api.json.JSONJAXBContext; 

@Provider 
public class CustomWoodwingOutputJSONContextProvider implements ContextResolver<JAXBContext> { 

private JAXBContext context; 
private Class<?>[] types = { MyClass.class }; 

public CustomWoodwingOutputJSONContextProvider() throws JAXBException { 
    this.context = new JSONJAXBContext(JSONConfiguration.natural().build(), types); 
} 

public JAXBContext getContext(Class<?> objectType) { 
    for (int i = 0; i < this.types.length; i++) 
     if (this.types[i].equals(objectType)) 
      return context; 

    return null; 
} 

}

+0

這是一個有點吃不消了我的時刻。我希望更簡單的事情。也許它會幫助別人。爲了我自己的需要,我只是把它作爲一個字符串而我在客戶端執行json解析。 – epeleg 2012-03-15 12:56:16