包含多个数组的JSON对象

时间:2017-03-20 02:55:28

标签: java android arrays json

我有包含json数组的json对象。这是json对象

{
"dataset": {
    "id": 11304240,
    "dataset_code": "teste",
    "database_code": "LBMA",
    "name": "testse: London Fixing",
    "description": "test",
    "refreshed_at": "2017-03-17T16:50:32.330Z",
    "newest_available_date": "2017-03-17",
    "oldest_available_date": "1968-01-02",
    "column_names": ["Date", "USD (AM)", "USD (PM)", "GBP (AM)", "GBP (PM)", "EURO (AM)", "EURO (PM)"],
    "frequency": "daily",
    "type": "Time Series",
    "premium": false,
    "limit": 1,
    "transform": null,
    "column_index": null,
    "start_date": "1968-01-02",
    "end_date": "2017-03-17",
    "data": [
        ["2017-03-17", 1228.75, 1229.6, 991.85, 994.25, 1140.53, 1144.27]
        ["2017-03-16", 1228.79, 1228.6, 992.85, 994.25, 1140.53, 1144.27]
    ],
    "collapse": null,
    "order": null,
    "database_id": 139
}
}

我需要将第一行数据数组提取到不同的字符串和双变量。

到目前为止,这是我的解决方案。我没有收到任何数据信息。

  try {
                JSONObject jsonObj = new JSONObject(jsonStr);


                // Getting JSON Array node
                JSONArray data = jsonObj.getJSONArray("data");
                //JSONObject contacts = jsonArray.getJSONArray("contacts");

                // looping through All Contacts


                    JSONArray js=data.getJSONArray(0);

                    for (int i = 0; i <js.length(); i++) {

                    JSONObject c = js.getJSONObject(i);

                    String id = c.getString("date");
                    String name = c.getString("USD (AM)");
                    String email = c.getString("USD (Pm)");

                    // tmp hash map for single contact
                    HashMap<String, String> contact = new HashMap<>();

                    // adding each child node to HashMap key => value
                    contact.put("date", date);
                    contact.put("USD (AM)", am);
                    contact.put("USD (PM)", pm);


                    // adding contact to contact list
                    contactList.add(contact);
                }

我从网址获取json对象作为字符串,但我如何从它们中提取变量?

这是我的预期结果

date = "2017-03-17"
am =  1228.75
pm = 1229.6

3 个答案:

答案 0 :(得分:0)

首先,您可能需要一个类来处理您的变量,因为您的业务模型需要。

类似的东西:

public class DataVo {
   private Date date;
   private Double am;
   private Double pm;

  // getters/setters
}

您可以创建自己的服务来接收String,并使用您显示的代码将其解析为DataVo列表。

或者您可以使用Gson之类的库,创建自定义序列化器/反序列化器来解决数据转换问题。

答案 1 :(得分:0)

感谢@AJB和@cleiton它现在正在工作.. :)

JSONObject jsonObj = new JSONObject(jsonStr);

                JSONObject dataset = jsonObj.getJSONObject("dataset");

                // Getting JSON Array node
                JSONArray data = dataset.getJSONArray("data");
                //JSONObject contacts = jsonArray.getJSONArray("contacts");

                // looping through All Contacts


                    JSONArray js=data.getJSONArray(0);

                    String date = js.getString(0);
                    String am = js.getString(1);
                    String pm =js.getString(2);


                HashMap<String, String> contact = new HashMap<>();

                // adding each child node to HashMap key => value
                contact.put("date", date);
                contact.put("USD (AM)", am);
                contact.put("USD (PM)", pm);

                contactList.add(contact);

答案 2 :(得分:-1)

创建一个对象来存储您需要的变量!