我有一个String变量,用于存储JavaScript对象的文字文本:

String jsString = "mainData = {"name":"John", "id":"12345"}"


Java中是否有JSON方法(或任何方法)会删除字符串的“ mainData =”部分,以便仅保留JavaScript数据?像这样:

newString = someMethod(jsString);
JSONObject jsonObject = new JSONObject(newString); //newString = "{"name":"John", "id":"12345"}"

最佳答案

String#replaceFirst

jsString = jsString.replaceFirst("^[^{]+", "");


Live Example

这将删除第一个{之前的所有字符作为字符串的开头。它假设字符串包含JSON,其中最外层的东西是一个对象(与数组或值相对),尽管可以很容易地对其进行调整以使其不作此假设。例如,此版本:

jsString = jsString.replaceFirst("^\\s*[A-Za-z0-9_$]+\\s*=\\s*", "");


Live Example

这将删除一系列字母,数字,_$,这些字符串可选地由空格包围,并在字符串的开头删除随后的=,可能后跟空格。现在,这不是有效的JavaScript标识符字符的完整列表(该列表很长),但是您知道了。

10-03 00:56