我正在将jsonobject视为[{" id":" [66]"}]如何转换为jsonarray?
Here is my code:
public Object[] showCampaigns(@RequestParam("selectedAccId") String selectedAccId, HttpSession session, Model model) {
Object[] responseBody = new Object[1];
List<Long> accountIds=new ArrayList<>();
try {
JSONArray clientjson = new JSONArray(selectedAccId);
for (int i = 0; i < clientjson.length(); ++i) {
JSONObject rec = clientjson.getJSONObject(i);
long id = Long.parseLong(rec.getString("id"));
accountIds.add(id);
}
}
错误我&#39; am gettinbg是: Long.parseLong(rec.getString(&#34; id&#34;))=&gt;目标VM发生异常:对于输入字符串:&#34; [66]&#34;&lt;
答案 0 :(得分:0)
键id
的值是一个字符串,"[66]"
,实际上不能解析为长。
问题不一定与您的代码有关,而是与此响应所来自的服务器有关,这就是应该更正的位置。
如果不可能:
您需要将其作为字符串获取,并将其解析为您自己的字符串;这是一个删除任何非数字的正则表达式。
...
// strip any non digit
String number = rec.getString("id").replaceAll("\\D+","");
// parse number only string
long id = Long.parseLong(number);
答案 1 :(得分:0)
您正在尝试解析具有&#39; [66]&#39;到了。
您只能将只有数字的字符串转换为Long
long id = Long.parseLong(rec.getString("id"));
将此代码可视化为
long id = Long.parseLong("[66]");
由于这一点,你得到了这个问题。
尝试使用类似的东西从字符串中删除所有标点符号,包括左括号和右括号。
String stringId= rec.getString("id").replaceAll("\\p{P}","");
long id = Long.parseLong(stringId);