【问题标题】:unable to save data from json array无法从 json 数组中保存数据
【发布时间】:2017-09-17 02:00:05
【问题描述】:

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

json 数组的片段:

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

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

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;

}

【问题讨论】:

    标签: android arrays json


    【解决方案1】:

    你的 JSON 字符串不是 JSON 对象,它是一个 JSON 数组,所以使用:

    JSONArray jArray = new JSONArray (loadJSONFromAsset());
    

    【讨论】:

    • 有时会发生错误。很高兴我能帮上忙。
    猜你喜欢
    • 2015-12-31
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多