如何在Android中从字符串中获取多个文本?
我正在为Xively开发Android。我获取以下文本数据并存储到字符串中如何在Android中从字符串中获取多个文本?,android,string,substring,Android,String,Substring,我正在为Xively开发Android。我获取以下文本数据并存储到字符串中 {"id":111111177,"title":"G-sensor","private":"true","feed":"https://api.xively.com/v2/feeds/111111177.json","auto_feed_url":"https://api.xively.com/v2/feeds/111111177.json","status":"frozen","updated":"2014-08-05
{"id":111111177,"title":"G-sensor","private":"true","feed":"https://api.xively.com/v2/feeds/111111177.json","auto_feed_url":"https://api.xively.com/v2/feeds/111111177.json","status":"frozen","updated":"2014-08-05T07:14:29.783670Z","created":"2014-08-01T08:29:17.156043Z","creator":"https://xively.com/users/x22819","version":"1.0.0","datastreams":[{"id":"GPIO1","current_value":"1","at":"2014-08-05T07:14:18.991421Z","max_value":"1.0","min_value":"0.0","tags":["xyz"],"unit":{"type":"G","label":"watts"}},{"id":"GPIO2","current_value":"0","at":"2014-08-05T07:14:29.783670Z","max_value":"1.0","min_value":"0.0","tags":["xyz"],"unit":{"type":"G","label":"watts"}},{"id":"GPIO3","current_value":"1","at":"2014-08-05T06:51:08.165217Z","max_value":"1.0","min_value":"1.0"},{"id":"GPIO4","current_value":"0","at":"2014-08-05T06:51:13.029452Z","max_value":"0.0","min_value":"0.0"},{"id":"GPIO5","current_value":"1","at":"2014-08-05T06:51:20.679123Z","max_value":"1.0","min_value":"1.0"},{"id":"GPIO6","current_value":"0","at":"2014-08-05T06:51:27.057369Z","max_value":"0.0","min_value":"0.0"}],"location":{"domain":"physical"},"product_id":"w8tuBsYf835kYTjDFz9w","device_serial":"DWJAXD6N7VDZ"}
在上面的数据中有id
和current_值
,我想从上面的文本中获得id
和current_值的数据,就像下面的文本一样
GPIO1 1
GPIO2 0
GPIO3 1
GPIO4 0
GPIO5 1
GPIO6 0
如何从上面的文本中获取id
的数据和当前值
?
有人能教我怎么做吗
提前感谢。试试这个:
String resultJSON = "datastreams":[{"id":"GPIO1","current_value":"1","at":"2014-08-05T07:14:18.991421Z","max_value":"1.0","min_value":"0.0","tags":["xyz"],"unit":{"type":"G","label":"watts"}},
{"id":"GPIO2","current_value":"0","at":"2014-08-05T07:14:29.783670Z","max_value":"1.0","min_value":"0.0","tags":["xyz"],"unit":{"type":"G","label":"watts"}},
{"id":"GPIO3","current_value":"1","at":"2014-08-05T06:51:08.165217Z","max_value":"1.0","min_value":"1.0"},
{"id":"GPIO4","current_value":"0","at":"2014-08-05T06:51:13.029452Z","max_value":"0.0","min_value":"0.0"},
{"id":"GPIO5","current_value":"1","at":"2014-08-05T06:51:20.679123Z","max_value":"1.0","min_value":"1.0"},
{"id":"GPIO6","current_value":"0","at":"2014-08-05T06:51:27.057369Z","max_value":"0.0","min_value":"0.0"}],"location":{"domain":"physical"},"product_id":"w8tuBsYf835kYTjDFz9w","device_serial":"DWJAXD6N7VDZ"};
JSONObject jsonRoot = new JSONObject(resultJSON);
JSONArray jsonData = jsonRoot.getJSONArray("Data");
for(int i=0; i<jsonData.lenght;i++) {
JSONObject jsonOBject = jsonData.getJSONObject(i);
Log.d(TAG, "json ("+i+") = "+jsonOBject.toString());
// do what you want with your JSONObject , i.e :add it to an ArrayList of paresed result
String ID = jsonOBject.getString("id");
}
String resultJSON=“datastreams”:[{“id”:“GPIO1”,“current_value”:“1”,“at”:“2014-08-05T07:14:18.991421Z”,“max_value”:“1.0”,“min_value”:“0.0”,“tags”:[“xyz”],“unit”:{“type”:“G”,“label”:“watts”},
{“id”:“GPIO2”,“当前_值”:“0”,“at”:“2014-08-05T07:14:29.783670Z”,“最大_值”:“1.0”,“最小值”:“0.0”,“标签”:[“xyz”],“单位”:{“类型”:“G”,“标签”:“瓦特”},
{“id”:“GPIO3”,“当前值”:“1”,“at”:“2014-08-05T06:51:08.165217Z”,“最大值”:“1.0”,“最小值”:“1.0”},
{“id”:“GPIO4”,“当前值”:“0”,“at”:“2014-08-05T06:51:13.029452Z”,“最大值”:“0.0”,“最小值”:“0.0”},
{“id”:“GPIO5”,“当前值”:“1”,“at”:“2014-08-05T06:51:20.679123Z”,“最大值”:“1.0”,“最小值”:“1.0”},
{“id”:“GPIO6”,“当前值”:“0”,“at”:“2014-08-05T06:51:27.057369Z”,“最大值”:“0.0”,“最小值”:“0.0”}],“位置”:{“域”:“物理”},“产品id”:“w8tuBsYf835kYTjDFz9w”,“设备序列”:“DWJAXD6N7VDZ”};
JSONObject jsonRoot=新的JSONObject(resultJSON);
JSONArray jsonData=jsonRoot.getJSONArray(“数据”);
对于(int i=0;i请尝试以下方法:
String resultJSON = "datastreams":[{"id":"GPIO1","current_value":"1","at":"2014-08-05T07:14:18.991421Z","max_value":"1.0","min_value":"0.0","tags":["xyz"],"unit":{"type":"G","label":"watts"}},
{"id":"GPIO2","current_value":"0","at":"2014-08-05T07:14:29.783670Z","max_value":"1.0","min_value":"0.0","tags":["xyz"],"unit":{"type":"G","label":"watts"}},
{"id":"GPIO3","current_value":"1","at":"2014-08-05T06:51:08.165217Z","max_value":"1.0","min_value":"1.0"},
{"id":"GPIO4","current_value":"0","at":"2014-08-05T06:51:13.029452Z","max_value":"0.0","min_value":"0.0"},
{"id":"GPIO5","current_value":"1","at":"2014-08-05T06:51:20.679123Z","max_value":"1.0","min_value":"1.0"},
{"id":"GPIO6","current_value":"0","at":"2014-08-05T06:51:27.057369Z","max_value":"0.0","min_value":"0.0"}],"location":{"domain":"physical"},"product_id":"w8tuBsYf835kYTjDFz9w","device_serial":"DWJAXD6N7VDZ"};
JSONObject jsonRoot = new JSONObject(resultJSON);
JSONArray jsonData = jsonRoot.getJSONArray("Data");
for(int i=0; i<jsonData.lenght;i++) {
JSONObject jsonOBject = jsonData.getJSONObject(i);
Log.d(TAG, "json ("+i+") = "+jsonOBject.toString());
// do what you want with your JSONObject , i.e :add it to an ArrayList of paresed result
String ID = jsonOBject.getString("id");
}
String resultJSON=“datastreams”:[{“id”:“GPIO1”,“current_value”:“1”,“at”:“2014-08-05T07:14:18.991421Z”,“max_value”:“1.0”,“min_value”:“0.0”,“tags”:[“xyz”],“unit”:{“type”:“G”,“label”:“watts”},
{“id”:“GPIO2”,“当前_值”:“0”,“at”:“2014-08-05T07:14:29.783670Z”,“最大_值”:“1.0”,“最小值”:“0.0”,“标签”:[“xyz”],“单位”:{“类型”:“G”,“标签”:“瓦特”},
{“id”:“GPIO3”,“当前值”:“1”,“at”:“2014-08-05T06:51:08.165217Z”,“最大值”:“1.0”,“最小值”:“1.0”},
{“id”:“GPIO4”,“当前值”:“0”,“at”:“2014-08-05T06:51:13.029452Z”,“最大值”:“0.0”,“最小值”:“0.0”},
{“id”:“GPIO5”,“当前值”:“1”,“at”:“2014-08-05T06:51:20.679123Z”,“最大值”:“1.0”,“最小值”:“1.0”},
{“id”:“GPIO6”,“当前值”:“0”,“at”:“2014-08-05T06:51:27.057369Z”,“最大值”:“0.0”,“最小值”:“0.0”}],“位置”:{“域”:“物理”},“产品id”:“w8tuBsYf835kYTjDFz9w”,“设备序列”:“DWJAXD6N7VDZ”};
JSONObject jsonRoot=新的JSONObject(resultJSON);
JSONArray jsonData=jsonRoot.getJSONArray(“数据”);
对于(inti=0;idataList=newarraylist();
JSONObject jsonObj=新的JSONObject(jsonStr);
//获取JSON数组节点
myarray=jsonObj.getJSONArray(“数据流”);
//在所有myarray中循环
对于(int i=0;ivalue
数据放置(标签ID,ID);
数据放置(标签日期、日期);
//向数据列表添加数据
dataList.add(数据);
}
dataList=newarraylist();
JSONObject jsonObj=新的JSONObject(jsonStr);
//获取JSON数组节点
myarray=jsonObj.getJSONArray(“数据流”);
//在所有myarray中循环
对于(int i=0;ivalue
数据放置(标签ID,ID);
数据放置(标签日期、日期);
//向数据列表添加数据
dataList.add(数据);
}
您拥有的数据实际上是一个JSON,因此您可以简单地将其解析为java POJO。我建议使用两种最流行的开源解析器之一或
你要做的是:
为所选解析器创建java POJO。为了使其更容易使用此在线工具
将生成的java类复制到项目中
使用JSON解析器,例如GSON
假设您将主类命名为示例,使用GSON可以如下解析它:
Gson gson = new Gson();
String data = ....//your JSON data
Example example = gson.fromJson(data, Example.class);
您想要获取的数据将具有自己的Java表示,并将通过getter方法提供,例如:
List<Datastream> datastreams = example.getDatastreamList();
for (DataStream data : datastreams) {
String id = data.getId();
String currentValue = data.getCurrentValue();
}
List datastreams=example.getDatastreamList();
for(数据流数据:数据流){
String id=data.getId();
字符串currentValue=data.getCurrentValue();
}
然后您可以做任何您喜欢的事情。请知道GSON也可以读取流,所以如果您已经将流解析为字符串,您可以跳过它并直接将该流传递给GSON对象
如果您不需要冗余的POJO或其参数,可以删除它们。GSON将处理它并忽略这些值。只需确保您感兴趣的数据保留生成的结构即可
这就是我要做的。您拥有的数据实际上是一个JSON,因此您可以简单地将其解析为java POJO。我建议使用两种最流行的开源解析器之一或
你要做的是:
为所选解析器创建java POJO。为了使其更容易使用此在线工具
将生成的java类复制到项目中
使用JSON解析器,例如GSON
假设您将主类命名为示例,使用GSON可以如下解析它:
Gson gson = new Gson();
String data = ....//your JSON data
Example example = gson.fromJson(data, Example.class);
您想要获取的数据将具有自己的Java表示,并将通过getter方法提供,例如:
List<Datastream> datastreams = example.getDatastreamList();
for (DataStream data : datastreams) {
String id = data.getId();
String currentValue = data.getCurrentValue();
}
List datastreams=example.getDatastreamList();
for(数据流数据:数据流){
String id=data.getId();
字符串currentValue=data.getCurrentValue();
}
然后您可以做任何您喜欢的事情。请知道GSON也可以读取流,所以如果您已经将流解析为字符串,您可以跳过它并直接将该流传递给GSON对象
如果你不想要红色