gpt4 book ai didi

java - 转义 net.sf.json.JSONObject

转载 作者:行者123 更新时间:2023-12-01 14:56:51 26 4
gpt4 key购买 nike

当我必须给出一个 JSONObject.fromObject 时,这里弹出一个异常 'true' = 'true' pq 是另一个单引号内的单引号,有人知道这种类型的转义字符API?

public static void main(String[] args) {

String json = "{gA:[ {c:{f:'C#',o:'=',v1:' ('true' = 'true' ) ' }}]}";


final Map<String, Object> map = new HashMap<String, Object>();



try {

JsonConfig cfg = new JsonConfig();
cfg.setRootClass(LinkedHashMap.class);
cfg.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);
cfg.setHandleJettisonSingleElementArray(false);
JSONObject jsonObjeto = JSONObject.fromObject(json, cfg);
System.out.println(jsonObjeto.toString());
} catch (final JSONException e) {

e.printStackTrace();
}


}

异常(exception):

net.sf.json.JSONException: Expected a ',' or '}' at character net.sf.json.JSONException: Expected a ',' or '}' at character 31 of {gA:[ {c:{f:'C#',o:'=',v1:' ('true' = 'true' ) ' }}]}  
at net.sf.json.util.JSONTokener.syntaxError(JSONTokener.java:499)
at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1099)
at net.sf.json.JSONObject.fromObject(JSONObject.java:159)
at net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:348)
at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1008)
at net.sf.json.JSONObject.fromObject(JSONObject.java:159)
at net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:348)
at net.sf.json.JSONArray._fromJSONTokener(JSONArray.java:1131)
at net.sf.json.JSONArray.fromObject(JSONArray.java:125)
at net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:351)
at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1008)
at net.sf.json.JSONObject._fromString(JSONObject.java:1201)
at net.sf.json.JSONObject.fromObject(JSONObject.java:165)
at br.com.michel.json.JsonTest.main(JsonTest.java:28)

我想要的json输出:

{"ga": [{"c": {"f", "C#", "o": "=", "v1": "('true' = 'true')"}}] }

最佳答案

您可以使用反斜杠转义单引号(由于我们使用的是 Java 字符串文字,因此必须转义单引号本身):

String json = "{gA:[ {c:{f:'C#',o:'=',v1:' (\\'true\\' = \\'true\\' ) ' }}]}";

使用修改后的 json 变量运行代码会产生以下输出:

{"gA":[{"c":{"f":"C#","o":"=","v1":" ('true' = 'true' ) "}}]}

此字符串与您所需的输出不同,因为它具有元素 v1 而不是 u 并且该值未被修剪。不过,我不确定这是否是复制/粘贴打字。如果这就是您想要的,那么修改解析的 JSONObject 就足够简单了。

关于java - 转义 net.sf.json.JSONObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14245656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com