Java ObjectMapper:不要转义
在解析Json对象时,如何告诉Jackson ObjectMapper“不要转义”?换句话说,返回字符串“原样”。例如,我的JSON如下所示: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(
{“字段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对象的。