Java ObjectMapper:不要转义

Java ObjectMapper:不要转义,java,json,jersey,jackson,Java,Json,Jersey,Jackson,在解析Json对象时,如何告诉Jackson ObjectMapper“不要转义”?换句话说,返回字符串“原样”。例如,我的JSON如下所示: {“字段1”:“xyz”,“字段2”:“ABWKJ\/m3ERpLr”} 通过ObjectMapper运行后,field2的值为:“ABWKJ/m3ERpLr”,但我想要“ABWKJ\/m3ERpLr”,因为我需要对其进行解密&解密失败,因为“\”反斜杠已消失 我尝试了以下几点: MyClass jsonMessage=mapper.readValue(

在解析Json对象时,如何告诉Jackson ObjectMapper“不要转义”?换句话说,返回字符串“原样”。例如,我的JSON如下所示:

{“字段1”:“xyz”,“字段2”:“ABWKJ\/m3ERpLr”}

通过ObjectMapper运行后,field2的值为:“ABWKJ/m3ERpLr”,但我想要“ABWKJ\/m3ERpLr”,因为我需要对其进行解密&解密失败,因为“\”反斜杠已消失

我尝试了以下几点:

MyClass jsonMessage=mapper.readValue(输入,MyClass)

以及:

MyClass-jsonMessage=mapper.readerFor(MyClass.readValue)(input.getBytes())


但这两个版本都以某种方式更改了我的字符串。我要它“原样”回来。我应该换个班吗?

我知道有点晚了,但我也遇到了类似的问题

我找到的一个解决方案是使用JsonRawValue打印字段原始值

public class MyClass{

    private String myField1;
    private String myField2;

    @JsonRawValue
    public String getMyField1() {
        return myField1;
    }

    @JsonRawValue
    public String getMyField2() {
        return myField2;
    }
}
请注意,出于某种原因,如果将一个属性设置为JsonRawValue,则还需要为其他属性添加注释

我不能100%确定这是否是解决问题的最佳解决方案,但它确实有效,如果您找到更好的解决方案,请告诉我。

@DilTeam

@JsonRawValue有时似乎并不总是有效,我建议使用字符串并检查令牌。我有同样的问题,并使用如下它为我工作

    String responseClone = finalResponse; // finalResponse =Json Response string

    String pinValue = null;

    if(null != responseClone){

        responseClone = responseClone.replace("{", "");
        responseClone = responseClone.replace("}", "");
        responseClone = responseClone.replace("\"", "");

        String[] strNodeSplit = responseClone.split(",");
        LOG.debug("Splited response");


        for (String stringNode : strNodeSplit) {

            int j =0 ;
            String[] strValueSplit = stringNode.split(":");

            for (String strValue : strValueSplit) {

                LOG.debug(j +" Value :" +" "+strValue);
                if(strValue.equalsIgnoreCase("PIN")){
                    pinValue = strValueSplit[++j];
                    LOG.debug("Pin equals value : "+pinValue);
                    break;
                }
                j++;
            }

        }
    }

有趣的是,这是一个“编辑”问题,我已经解决了。真正的问题仍然有效。我自己没有时间尝试这个,但我认为这可能会帮助你:。这里稍微谈一下它的用法。我认为这个想法是定义一个字符转义,它排除了“\”。注意:当我使用“@Consumes(APPLICATION\u JSON)”进行解析时,它在我的web服务中起作用。Consumes来自包“javax.ws.rs”,所以我知道这是可以做到的。我只是不知道当我使用“@Consumes”时会运行什么代码。我尝试了字符转义,但对“reading”无效。所有示例都是用于编写Json对象的。