org.json.simple.JSONArray无法强制转换为org.json.simple.JSONObject

时间:2016-08-26 07:55:43

标签: java json

我试图读取一个JSON文件,其中我有一系列整数数据但读取时告诉我它无法从JSONObject转换为JSONArray

JSON文件结构的一部分是:

SendMessage

代码:

{  
    "data": [  
        [1, 1, 1, 1, 1, 1, 1, 1],  
        [1, 1, 0, 0, 0, 0, 1, 1],  
        [1, 1, 0, 0, 0, 0, 1, 1],  
        [0, 1, 1, 0, 0, 1, 1, 0],  
        [0, 1, 1, 1, 1, 1, 1, 0],  
        [0, 0, 1, 1, 1, 1, 0, 0],  
        [0, 0, 0, 0, 0, 0, 0, 0],  
        [0, 0, 0, 0, 0, 0, 0, 0]  
    ],  
    "time": 0.2  
}, 

4 个答案:

答案 0 :(得分:0)

...试

JSONArray tag = jsonObject.getJSONArray("data");

答案 1 :(得分:0)

尝试使用以下内容从密钥data

获取JSONArray
JSONArray tag = (JSONArray) jsonObject.getJSONArray("data");

jsonObject.get()会返回Object而不是JSONArray

答案 2 :(得分:0)

import java.io.FileReader;

import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.JSONParser;

public class JSONTest {

    public static void main(String[] args){


        try {

            JSONParser parser = new JSONParser();

            Object obj = parser.parse(new FileReader("C:\\Carriots\\dos.json"));

            JSONObject jsonObject = (JSONObject) obj;

            JSONArray data = (JSONArray)jsonObject.get("data");

            for(Object o: data){
                System.out.println(o);
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }


}

输出:

[1,1,1,1,1,1,1,1]
[1,1,0,0,0,0,1,1]
[1,1,0,0,0,0,1,1]
[0,1,1,0,0,1,1,0]
[0,1,1,1,1,1,1,0]
[0,0,1,1,1,1,0,0]
[0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0]

答案 3 :(得分:0)

您可以使用迭代器来处理数组数据。请务必使用Object而不是String或Integer,因为将JSONObject转换为其中一个值时会出错。

package jsonProcessing;

import java.io.FileReader;
import java.util.Iterator;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

public class JsonNumReader {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    JSONParser parser = new JSONParser();

    try {
        JSONObject jsonObject = (JSONObject) parser.parse(new FileReader("C:/JSON/numbers.json"));

        JSONArray array = (JSONArray)jsonObject.get("data");

        Iterator<Object>iterator = array.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }   
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
  }
}

输出:

[1,1,1,1,1,1,1,1]
[1,1,0,0,0,0,1,1]
[1,1,0,0,0,0,1,1]
[0,1,1,0,0,1,1,0]
[0,1,1,1,1,1,1,0]
[0,0,1,1,1,1,0,0]
[0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0]