`

struts json序列化遇上replaceAll就出问题

阅读更多

是用struts 的json插件进行序列化

 代码如下:

@Test
	public void test_json() throws JSONException {
		Map<String, String> map = new HashMap<String, String>();
		map.put("name", "whua\"ng");
		String result = JSONUtil.serialize(map);

		System.out.println(result);
		String source = "{\"result\":\"_jsonPlaceHolder\"}";
		String result2=source.replaceAll("\"" + "_jsonPlaceHolder" + "\"", result);
		System.out.println(result2);
	}

 运行结果如下:

{"name":"whua\"ng"}

{"result":{"name":"whua"ng"}}

 

是用json解析时报错,{"result":{"name":"whua"ng"}} 不是合法的json字符串。

经过反复看,发现whua\"ng中的斜杠没有了!!!!

问题出在replaceAll

 

解决方法如下

(添加).replaceAll("\\\\", "\\\\\\\\")

@Test
	public void test_json() throws JSONException {
		Map<String, String> map = new HashMap<String, String>();
		map.put("name", "whua\"ng");
		String result = JSONUtil.serialize(map);

		System.out.println(result);
		String source = "{\"result\":\"_jsonPlaceHolder\"}";
		String result2 = source.replaceAll("\"" + "_jsonPlaceHolder" + "\"",
				result.replaceAll("\\\\", "\\\\\\\\"));
		System.out.println(result2);
	}

 

 

  • 大小: 2.5 KB
0
1
分享到:
评论

相关推荐

    ReplaceAll

    ReplaceAll 多文件文本批量替换工具 依赖.net framework2.0

    JS中实现replaceAll的方法(实例代码)

    这个自定义的replaceAll方法不仅考虑了正则表达式和普通字符串作为查找目标,还考虑了是否需要区分大小写的问题(ignoreCase参数)。 在这个自定义replaceAll方法中,首先判断传入的参数中,查找目标(reallyDo)...

    转载 xStream完美转换XML、JSON

    xStream是一个强大的库,它提供了一种简单的方式来序列化和反序列化Java对象到XML,反之亦然。在这个场景中,它同样能够处理JSON转换,虽然JSON不是其原生支持的格式,但通过一些额外的配置和库,如json-simple,...

    js使用正则实现ReplaceAll全部替换的方法

    第三种方法尤其有用,因为它可以直接调用,语法上与Java或其他一些语言的replaceAll方法一致,提高了代码的可读性和易用性。 此外,文中还提到了两个JavaScript正则表达式工具网站,提供了在线测试和在线生成正则...

    javascript json字符串到json对象转义问题

    但是,如果JSON字符串中的特殊字符未正确转义,`JSON.parse()`将会抛出错误。例如,双引号(")在JSON字符串中必须被转义为`\\"`,否则解析器会认为字符串没有正确关闭。 在问题描述中,提到的后台生成的JSON字符串...

    用C#写的字符串处理函数,字符串处理出BUG的朋友可以使用它。较上一个版本修正了一处bug,并增加了ReplaceAll方法。

    //初始化 Console.WriteLine(ms.IndexOf("hello world","l",5)); //输出9 Console.WriteLine(ms.Substring("hello world",1,6)); //输出“ello w" Console.WriteLine(ms.ReplaceLast("hello world","l","*")); //...

    gson,volley封装,实现网络返回json自动转对象

    `Gson`和`Volley`是Google推荐的两个强大的工具,分别用于处理JSON序列化与反序列化以及网络请求。本教程将深入讲解如何利用这两个库进行网络请求,并自动将返回的JSON数据转换为Java对象。 首先,`Gson`是Google...

    PB_ReplaceAll

    在PowerBuilder中,`ReplaceAll`函数通常用在`String`对象上,它的主要作用是查找字符串中的所有指定子串,并将其替换为另一个字符串。这个功能对于数据清洗、日志处理或用户界面的动态内容更新等场景非常有用。 `...

    Java中replace、replaceAll和replaceFirst函数的用法小结

    Java中的`replace`、`replaceAll`和`replaceFirst`是字符串操作中常见的方法,用于替换字符串中的特定子串。它们都是`String`类的方法,但各自有不同的行为和用途。 1. `replace(CharSequence target, CharSequence...

    Delphi XE8 IDHTTP1.get()方法從Servlet服务器取json数据

    在本示例中,我们探讨了如何在 Delphi XE8 中使用 IDHTTP1.get() 方法从一个基于 Servlet 3.1 的服务器获取 JSON 数据。这个过程涉及到 Delphi 客户端与 Java 服务端之间的通信,其中 JSON 用于数据交换格式。以下是...

    JavaScript中使用replace结合正则实现replaceAll的效果

    正常情况下,replace方法只替换字符串中的第一个匹配项,若要替换字符串中的所有匹配项,就需要用到正则表达式的全局搜索标志“g”(global)。此外,还可以结合“m”(multiLine)标志,用于指定匹配应该覆盖多行。...

    Struts1-windowsToLinux

    Struts1是一个经典的Java Web框架,它为开发者提供了一种结构化的MVC(Model-View-Controller)设计模式实现方式,使得开发人员可以更高效地构建动态网站应用程序。本项目"Struts1-windowsToLinux"显然是一个利用...

    Java解析JSON数据时报错问题解决方案

    本篇将深入探讨一个具体的Java解析JSON数据时报错问题及其解决方案。 一、问题背景 在实际项目测试阶段,测试人员发现后台日志频繁出现JSON解析错误。错误信息提示,系统无法正确解析接收到的JSON数据,这可能直接...

    Go语言json编码驼峰转下划线、下划线转驼峰的实现

    使用标准库`encoding/json`进行序列化时,输出的结果将是: ```json {"HelloWorld":"chenqionghe","LightWeightBaby":"muscle"} ``` 这样的格式并不符合常见的命名规范,特别是当我们需要与外部系统交互时,可能会...

    replaceall.java

    数据结构 二叉树 替换子树replaceAll \***********************************************************************************************/

    Java中replace和replaceAll的区别

     1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也是字符串);  2)replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过...

    Java Json字符串的双引号(&quot;&quot;)括号如何去掉

    这样处理后,Json字符串就能通过校验并正确解析。 在处理Json字符串时,还需要注意以下几点: - 使用专业的Json库,如`org.json`、`com.google.gson`或`com.alibaba.fastjson`等,它们提供了丰富的API来解析和生成...

    String.prototype.replaceAll:适用于String.prototype.replaceAll ESnext提案的符合规范的polyfill

    string.prototype.replaceall 用于String.prototype.replaceAll的ES Proposal规范填充程序。 如果不可用或不String.prototype.replaceAll调用其“ shim”方法对String.prototype.replaceAll进行填充。 该软件包...

    replaceall:替换 JavaScript 字符串中的所有实例

    var replaceall = require("replaceall"); 使用替换 var result = replaceall ( "instances of this" , "with this string" , "in this string" ) ; 例子 var original = "hello world goodbye world" ; ...

Global site tag (gtag.js) - Google Analytics