我有包含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
答案 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)
创建一个对象来存储您需要的变量!