Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中从字符串中获取多个文本?_Android_String_Substring - Fatal编程技术网

如何在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

我正在为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-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;i
dataList=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对象

    如果你不想要红色