我想获得long" transmitBytes"的价值。在这个JSON字符串中
[
{
"portNumber" : 2,
"queueId" : 0,
"transmitBytes" : 1944145,
"transmitPackets" : 1684,
"transmitErrors" : 0
}
]
我使用了org.json库并实现了代码:
String queueJson = [{"portNumber":2,"queueId":0,"transmitBytes":1944145,"transmitPackets":1684,"transmitErrors":0}];
System.out.println("The JSON string is: " + queueJson);
JSONObject obj;
try {
obj = new JSONObject(queueJson);
long TXbytes = obj.getLong("transmitBytes");
System.out.println("The amount of transmittet bytes is " + TXbytes);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
当我运行Apache tomcat Web服务器时,会出现问题。发生以下错误:
SEVERE: A child container failed during start
以下:
org.apache.catalina.LifecycleException: Failed to start component
当我删除JSONObject类和相应的org.json库时,一切正常,服务器运行没有任何问题。有谁知道为什么会出现这个问题,还有其他库可以从Java访问JSON字符串中的long值吗?
提前致谢
答案 0 :(得分:1)
您的JSON表单是:
Array -> Object(s)
所以你应该先访问数组然后再访问
JSONArray array = new JSONArray(queueJson);
JSONObject obj = array.getJSONObject(0);
0因为它是第一个索引(唯一一个)。其他代码将是相同的。
另一种方法是通过编辑你的Json来修复你的问题(如果它是由你制作的)并让它返回如下内容:
{
"portNumber": 2,
"queueId": 0,
"transmitBytes": 1944145,
"transmitPackets": 1684,
"transmitErrors": 0
}
答案 1 :(得分:0)
试试这段代码:
JSonArray array=new JSonArray(queueJson);
而不是obj = new JSONObject(queueJson);