我已经解析了一些JSON数据,只要我将它存储在String变量中就可以正常工作。
我的问题是我需要int varibable中的ID而不是String。
我试图进行演员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);
}
}
答案 0 :(得分:16)
您可以使用parseInt
:
int id = Integer.parseInt(jsonObj.get("id"));
或更好,更直接地使用getInt方法:
int id = jsonObj.getInt("id");
答案 1 :(得分:9)
这取决于您要解析的属性类型。
如果json属性是一个数字(例如5),你可以直接转换为Long,所以你可以这样做:
(long) jsonObj.get("id") // with id = 5, cast `5` to long
获得很长时间后,你可以再次投射到int,结果是:
(int) (long) jsonObj.get("id")
如果json属性是带引号的数字(例如“5”),则将其视为字符串,并且您需要执行类似于Integer.parseInt()或Long.parseLong()的操作;
Integer.parseInt(jsonObj.get("id")) // with id = "5", convert "5" to Long
唯一的问题是,如果你有时收到id是一个字符串或一个数字(你不能预测你的客户端的格式或它可以互换),你可能会得到一个例外,特别是如果你在null json上使用parseInt / Long对象
如果不使用Java Generics,处理我使用的这些运行时异常的最佳方法是:
if(jsonObj.get("id") == null) {
// do something here
}
int id;
try{
id = Integer.parseInt(jsonObj.get("id").toString());
} catch(NumberFormatException e) {
// handle here
}
您也可以先删除它,然后将该异常添加到catch中。 希望这会有所帮助。
答案 2 :(得分:4)
非常简单。
示例JSON:
{
"value":1
}
int z = jsonObject.getInt("value");
答案 3 :(得分:2)
他们没有为我工作。 我做到了这一点并且有效:
要编码为json:
JSONObject obj = new JSONObject();
obj.put("productId", 100);
解码:
long temp = (Long) obj.get("productId");
答案 4 :(得分:0)
我使用json.get()和instanceof的组合来读取可能是整数或整数字符串的值。
这三个测试用例说明:
int val;
Object obj;
JSONObject json = new JSONObject();
json.put("number", 1);
json.put("string", "10");
json.put("other", "tree");
obj = json.get("number");
val = (obj instanceof Integer) ? (int) obj : (int) Integer.parseInt((String) obj);
System.out.println(val);
obj = json.get("string");
val = (obj instanceof Integer) ? (int) obj : (int) Integer.parseInt((String) obj);
System.out.println(val);
try {
obj = json.get("other");
val = (obj instanceof Integer) ? (int) obj : (int) Integer.parseInt((String) obj);
} catch (Exception e) {
// throws exception
}
答案 5 :(得分:0)
这个问题有点老了,但我得到了一个很好的结果,创建了一个函数来将 Json 字符串中的对象从字符串变量转换为整数
function getInt(arr, prop) {
var int;
for (var i=0 ; i<arr.length ; i++) {
int = parseInt(arr[i][prop])
arr[i][prop] = int;
}
return arr;
}
该函数只是遍历数组并将所选对象的所有元素作为整数返回
答案 6 :(得分:-1)
首先,在文件的<div id="gamen" class="hidden">
<button class='button' data-next="gamen1" data-parent="gamen" data-spec="ram" value="2GB">Lichte games</button>
<button class='button' data-next="gamen1" data-parent="gamen" data-spec="videokaart" value="2GB">Middel games</button>
<button class='button' data-next="gamen1" data-parent="gamen" data-spec="processor" value="i9">Zware games</button>
</div>
上创建一个BufferedReader
。
然后,创建一个新的“ JSONParser()”对象,该对象将分析从文件读取的内容。
您将已解析的对象强制转换为FileReader
并获得JSONObject
字段。
id