Java 从JSON字符串中删除双引号
下面是JSON字符串: {学生:[{\studentId\:\A1\,\studentNumber\ :\287\,\studentType\:\FullTime\}]}Java 从JSON字符串中删除双引号,java,json,jackson,Java,Json,Jackson,下面是JSON字符串: {学生:[{\studentId\:\A1\,\studentNumber\ :\287\,\studentType\:\FullTime\}]} 为了在java对象中反序列化这个字符串,我必须删除\可以使用字符串替换方法来完成。除此之外,前面[和后面]也有双引号。在使用Jackson进行反序列化时,如何删除或允许这些双引号。您不必自己做,Jackson会处理。创建一个pojo类学生,您可以编写如下内容: ObjectMapper mapper = new ObjectM
为了在java对象中反序列化这个字符串,我必须删除\可以使用字符串替换方法来完成。除此之外,前面[和后面]也有双引号。在使用Jackson进行反序列化时,如何删除或允许这些双引号。您不必自己做,Jackson会处理。创建一个pojo类学生,您可以编写如下内容:
ObjectMapper mapper = new ObjectMapper();
Student student = mapper.readValue(responseBody, Student.class);
尝试用[和]替换[和]
json=json.replaceAll\\\\[,[;
json=json.replaceAll\\]\,] 与ObjectMapper一样,我们也可以使用Gson实现同样的目的
Gson gson = new Gson();
gson.fromJson(responseBody, Student.class);
}
上面使用GSON字符串适配器从字符串中删除引号如果任何字段中有包含反斜杠的数据,如:studentNumber:2016\287,该怎么办?仍然要替换字符串吗?请改用JSON解析。它应该从json字符串创建对象。不会有任何带有反斜杠的数据。这里主要关心的是之前[和之后]。这个问题的答案将对您有所帮助。我做了同样的事情,但是因为在它给出错误之前[和之后]有额外的\和引号。我使用replace方法删除了\但无法删除[和]之前和之后的引号。下面的字符串可以很好地使用我的代码:{studentId:A1,studentNumber:287,studentType:FullTime}}这很好。只有一个问题。。为什么我们要在[and]之前添加\\。这是一种可能会在非平凡情况下中断的攻击。如果student对象中的任何内容包含json转义字符(例如引号),则我怀疑反序列化的数据将是错误的,这将是双转义或[或]。
public class StringTypeSerializationAdapter extends TypeAdapter<String> {
public String read(JsonReader reader) {
throw new UnsupportedOperationException();
}
public void write(JsonWriter writer, String value) throws IOException {
if (value == null) {
writer.nullValue();
return;
}
writer.jsonValue(value);
}