我在以下代码中遇到了一些问题。
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中,正常生成了JSON,其中’
的{{1}}被Mother’s
我能够使用\u2019
检索原始值,但无法从此org.apache.commons.lang3.StringEscapeUtils
字符串中重建JSON。
任何人都可以帮忙。
答案 0 :(得分:0)
为什么需要此过程仅按以下顺序进行序列化和反序列化。 如果您尝试从文件中读取未转义的json并构造JSONObject,则会抛出org.json.JSONTokener.syntaxError。您应该使用转义的json进行重构。
String value="[Mother’s Day, Birthday \"Add to Cart\"]";
JSONObject data= new JSONObject();
data.put("title", value);
System.out.println(data.toString());
String deserialized = new JSONObject(data.toString()).getString("title");
System.out.println(deserialized);
输出:
{"title":"[Mother\u2019s Day, Birthday \"Add to Cart\"]"}
[Mother’s Day, Birthday "Add to Cart"]