Java 使用JAXB注释将实例变量字符串转换为JSON
我有一个带有json格式的字符串实例变量的对象Java 使用JAXB注释将实例变量字符串转换为JSON,java,json,jaxb,Java,Json,Jaxb,我有一个带有json格式的字符串实例变量的对象 package json; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class Test { private String json; // Contains a json String {"test": 1} public String getJson() { return json; }
package json;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Test {
private String json; // Contains a json String {"test": 1}
public String getJson() {
return json;
}
public void setJson(String json) {
this.json = json;
}
}
当我封送此对象时,会得到以下json:
{
"json" : "{\"test\": 1}"
}
我想要的是:
{
"json" : {
"test" : 1
}
}
有允许这样做的注释吗
这是示例代码:
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import org.eclipse.persistence.jaxb.MarshallerProperties;
public class Main {
public static void main (String [] args) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(Test.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.setProperty(MarshallerProperties.MEDIA_TYPE, "application/json");
m.setProperty(MarshallerProperties.JSON_INCLUDE_ROOT, false);
Test t = new Test();
t.setJson("{\"test\": 1}");
m.marshal(t, System.out);
}
}
我一直试图在JAXB中找到一些等价的东西,但我找不到。例如,Jackson就为此提供了一个
@JsonRawValue
注释。你可以考虑切换。@ SotiriosDelimanolis感谢这一点,这很好,你能把它作为一个答案,以便我能接受它吗?