将json对象解析为字符串

Kwi*_*enP 6 java json jaxb resteasy jackson

我有一个关于我正在构建的Web应用程序的问题,其中我有一个接收json字符串的REST服务.

Json字符串类似于:

{
    "string" : "value",
    "string" : "value", 
    "object" : {
                 "string" : "value",
                 "string" : "value",
                 ....
                }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用resteasy来解析使用下面的jackson的json字符串.我有一个jaxb注释类,我想将"对象"完全解析为String变量.我想这样做的原因是以后能够使用正确的解析器解析json(它取决于发送请求的应用程序,因此事先无法知道).

我的jaxb注释类看起来像这样:

@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Test{

@XmlElement(type = String.class)
private String object;

//getter and setter
...
}
Run Code Online (Sandbox Code Playgroud)

当我执行其余的调用并让jackson解析这段代码时,我得到了一个

Can not deserialize instance of java.lang.String out of START_OBJECT token
Run Code Online (Sandbox Code Playgroud)

错误.所以实际上我正在尝试将一个json字符串(一个json对象)解析成一个String.我似乎找不到有类似问题的人.

提前感谢您的回复.

Ily*_*lya 1

java.lang.String out of START_OBJECT token
Run Code Online (Sandbox Code Playgroud)

这意味着后面的预期字符"object"是引号",而不是括号{

预期 json

"object" : "my object"
Run Code Online (Sandbox Code Playgroud)

实际的json

"object" : { ...  
Run Code Online (Sandbox Code Playgroud)

=======
如果您想像示例中那样解析 json,请更改您的类。例如

@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Test{

   @XmlElement
   private InnerTest object;

   //getter and setter
...
}  

@XmlAccessorType(XmlAccessType.PROPERTY)
public class InnerTest{

   @XmlElement
   private String string;

   //getter and setter
...
}
Run Code Online (Sandbox Code Playgroud)