从Java访问JSON字符串中的长值
我想获取这个JSON字符串中长“transmitBytes”的值从Java访问JSON字符串中的长值,java,json,tomcat,Java,Json,Tomcat,我想获取这个JSON字符串中长“transmitBytes”的值 [ { "portNumber" : 2, "queueId" : 0, "transmitBytes" : 1944145, "transmitPackets" : 1684, "transmitErrors" : 0 } ] 我使用了org.json库并实现了以下代码: String queueJson = [{"por
[
{
"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();
}
当我运行ApacheTomcatWeb服务器时,问题就出现了。出现以下错误:
SEVERE: A child container failed during start
包括:
org.apache.catalina.LifecycleException: Failed to start component
当我删除JSONObject类和相应的org.json库时,一切正常,服务器运行没有任何问题。有人知道为什么会出现这个问题吗?有没有其他库可以从Java访问JSON字符串中的长值
提前感谢请尝试以下代码:
JSonArray array=new JSonArray(queueJson);
而不是obj=newjsonobject(queueJson)代码>您的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
}
共享完整的stacktrace..同样的问题也会发生