我正在尝试解析表示如下的json字符串: json viewer
{PurchAdBidderBidRequest:{div:"lmhovttghyiifbwnzktyzmqic"}}
当前我正在使用导致给定异常Unexpected character (P) at position 1.
的代码,请提出解决方法,因为我已经用Google搜索了此错误,但我的json与我在此处发现的与此相关的其他问题没有什么不同
System.out.println(jstring);
JSONParser parser = new JSONParser();
JSONObject js = null;
try {
js = (JSONObject) parser.parse(jstring);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println("Before : "+ (new JSONObject(js)));
答案 0 :(得分:0)
JSON格式的键必须用引号引起来。
尝试一下:
{“ PurchAdBidderBidRequest”:{“ div”:“ lmhovttghyiifbwnzktyzmqic”}}
答案 1 :(得分:0)
看到这是一种有效的Javascript语法并且可以对其进行评估,这使我有了使用Nashorn Javascript Engine的想法,该{@ 3}是在Java中实现的,默认情况下在jdk发行版中可用。
因此,您可以修改图像中的那个字符串,我认为它是字符串而不是对象,即您可以将值设为"{PurchAdBidderBidRequest:{div:\"lmhovttghyiifbwnzktyzmqic\"}}"
而不是{PurchAdBidderBidRequest:{div:"lmhovttghyiifbwnzktyzmqic"}}
。
一个小例子:
import javax.script.ScriptEngine;
import jdk.nashorn.api.scripting.NashornScriptEngineFactory;
import jdk.nashorn.api.scripting.JSObject;
class BadJson {
public static void main(String[] args) throws Exception {
NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine();
String v = "v = {PurchAdBidderBidRequest:{div:\"lmhovttghyiifbwnzktyzmqic\"}}";
JSObject res = (JSObject)(engine.eval(v));
System.out.println(((JSObject)(res.getMember("PurchAdBidderBidRequest"))).getMember("div"));
}
}
我认为您现在可以利用它来解析任何内容。
答案 2 :(得分:0)
当您遇到字母时,在它前面没有双引号。
然后添加双引号
当您找到“:”或“}”并且在其前面没有双引号时
然后添加双引号