我已经解析了一些JSON数据,只要我将其存储在String变量中,它就可以正常工作。
我的问题是我需要一个int变量而不是String中的ID。我试着做了一个演员int id = (int) jsonObj.get("");
但是它给出了一个错误消息,我不能将对象转换为int。因此,我尝试使用以下命令进行转换:
String id = (String) jsonObj.get("id");
int value = Integer.parseInt(id);
但这也不起作用。什么是错的。JSON如何与int一起工作?我的字符串工作得很好,只有当我试图把它们作为一个int时,我才会遇到问题。
下面是我的代码:
public void parseJsonData() throws ParseException {
JSONParser parser = new JSONParser();
Object obj = parser.parse(jsonData);
JSONObject topObject = (JSONObject) obj;
JSONObject locationList = (JSONObject) topObject.get("LocationList");
JSONArray array = (JSONArray) locationList.get("StopLocation");
Iterator<JSONObject> iterator = array.iterator();
while (iterator.hasNext()) {
JSONObject jsonObj = (JSONObject) iterator.next();
String name =(String) jsonObj.get("name");
String id = (String) jsonObj.get("id");
Planner.getPlanner().setLocationName(name);
Planner.getPlanner().setArrayID(id);
}
}
8条答案
按热度按时间qyzbxkaa1#
您可以使用
parseInt
:或者更好更直接的getInt方法:
bn31dyow2#
它取决于您正在分析的属性类型。
如果json属性是一个数字(e.g. 5)你可以直接转换为Long,所以你可以这样做:
得到long后,你可以再次转换为int,结果是:
如果json属性是一个带引号的数字(e.例如“5”),is被认为是一个字符串,你需要做一些类似于Integer的事情。parseInt()或Long。return();
唯一的问题是,如果你有时候接收到的id是字符串或数字(你不能预测客户端的格式,或者它可以互换),你可能会得到一个异常,特别是如果你在一个null json对象上使用parseInt/Long。
如果不使用Java泛型,我使用的处理这些运行时异常的最佳方法是:
您还可以删除第一个if并将异常添加到catch中。希望这能帮上忙。
a0x5cqrl3#
很简单。
JSON示例:
sg2wtvxw4#
他们中没有一个为我工作。我这样做了,它工作:
编码为json:
要解码:
hs1rzwqc5#
我使用了JSON的组合。get()和instanceof读取可能是整数或整数字符串的值。
这三个测试用例说明:
kx1ctssn6#
这个问题有点老了,但是我创建了一个函数,将Json字符串中的对象从字符串变量转换为整数,得到了很好的结果
该函数只是遍历数组,并将所选对象的所有元素作为整数返回
wi3ka0sx7#
JsonNode用途:
Integer.parseInt(String.valueOf())
xoefb8l88#
这是只对我有用的:
这是因为json数字值只有Long。