【发布时间】:2019-01-07 17:16:30
【问题描述】:
我在下面的代码中遇到了一些问题。
import org.json.JSONObject;
/**
*
* @author ajmalsha
*
*/
public class test {
/**
*
* @param args
*/
public static void main(String[] args) {
String value="[Mother’s Day, Birthday \"Add to Cart\"]";
JSONObject data= new JSONObject();
data.put("title", value);
System.out.println(data);
String finalData=org.apache.commons.lang3.StringEscapeUtils.unescapeJava(data.toString());
System.out.println(finalData);
}
}
上面代码的输出是
{"title":"[Mother\u2019s Day, Birthday \"Add to Cart\"]"}
{"title":"[Mother’s Day, Birthday "Add to Cart"]"}
上面第一个JSON正常生成,这里Mother’s的’被替换为\u2019
我能够使用 org.apache.commons.lang3.StringEscapeUtils 检索原始值,但无法从该 finalData 字符串重建 JSON。
谁能帮帮我。
【问题讨论】:
-
如果您将字符串转义为 Java 通常转义的内容,那么您如何期望 JSON 解析器始终能够使用它?
-
在我的输入中,我将 Mother's 更改为 Mother\u2019s。我需要避免这种变化,这就是我喜欢这个的原因。还有其他解决方案吗?
-
由于您使用
JSONObject创建 json,我将使用同一库的解析器再次解析它 - 而不是一些基于 Java 的实用程序。
标签: java json apache unicode-escapes