无法从json数组保存数据

时间:2017-09-17 02:00:06

标签: android arrays json

我正在尝试从json数组文件中提取一些数据,我按照以下步骤操作 Reading a Json Array in android

json数组的一个snippit:

[
{
"JobNo": 1,
"JobTime": 30,
"JobDate": "20170911",
"WorkerTime": 27,
"JobTimeError": -3
},
{
"JobNo": 2,
"JobTime": 22,
"JobDate": "20170911",
"WorkerTime": 21,
"JobTimeError": -1
},

我想要做的是,提取数据并将它们存储到自己的数组中,JobNo到JobNo数组等等。以下代码是我的尝试,但它并不存储值(崩溃)在吐司,因为它说数组中没有数据)。 感谢

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Spinner staticSpinner = (Spinner) findViewById(R.id.static_spinner);
    ArrayList<Integer> JobNo = new ArrayList<>();
    ArrayList<Integer> JobTime= new ArrayList<>();
    ArrayList<String> JobDate= new ArrayList<>();
    ArrayList<Integer> WorkerTime= new ArrayList<>();
    ArrayList<Integer> JobTimeError = new ArrayList<>();

    try {
        JSONObject json = new JSONObject(loadJSONFromAsset());
        JSONArray jArray = json.getJSONArray("Data");

        for (int i = 0; i < jArray.length(); i++) {
            JSONObject json_data = jArray.getJSONObject(i);
            int JobN = json_data.getInt("JobNo");
            int JobT = json_data.getInt("JobTime");
            String JobD = json_data.getString("JobDate");
            int WorkT = json_data.getInt("WorkerTime");
            int JobTE = json_data.getInt("JobTimeError");
            JobNo.add(JobN);
            JobTime.add(JobT);
            JobDate.add(JobD);
            WorkerTime.add(WorkT);
            JobTimeError.add(JobTE);

        }
    }
    catch (JSONException e) {
        e.printStackTrace();
    }
    Toast.makeText(this,
            JobDate.get(1),
            Toast.LENGTH_LONG).show();
}

    public String loadJSONFromAsset() {
    String json = null;
    try {

        InputStream is = getAssets().open("convertcsv.json");

        int size = is.available();

        byte[] buffer = new byte[size];

        is.read(buffer);

        is.close();

        json = new String(buffer, "UTF-8");


    } catch (IOException ex) {
        ex.printStackTrace();
        return null;
    }
    return json;

}

1 个答案:

答案 0 :(得分:2)

您的JSON字符串不是JSON对象,它是JSON数组,因此请使用:

JSONArray jArray = new JSONArray (loadJSONFromAsset());