紧接上一篇内容
上一篇我们在map阶段所使用的思路是用JsonObject中的getStirng的方法,然后得到了他们对应的值,然后我们用再用Stringbuffer这个类的一些功能,使用循环,然后让这些获得的字符串,然后进行拼接,最后得到指定数据
现在让我们尝试换种思路,就是我们不用StringBuffer的方法,我们直接就是用String字符串的相加
要想实现这个思路,我们肯定是要借助我们的for循环来实现字符串的拼接,这里有个问题就是你的循环的主体是谁,这时候就要考虑,我们取出开的是什么,每一个json数据对应的值。相对于目标数据,他们之间缺少“,”,所以我们要循环的就是每一个字符串还有“,”,使其能够成功的拼接,这里还有一个问题就是我们循环后产生的结果是否是我们的目标的数据呢,如果不是我们该怎么处理,要是你在此时在你的循环后,直接输出你循环后的字符串,你就会发现,在每一个数据的方法后面都有一个“,”,多出来了一个,该如何处理呢,这个时候想想你处理的数据是什么,Stirng字符串,然后这个时候你就老老实实的看看api,看看有没有对应的方法,能帮你处理了这个问题吗
对于String类,他有一个SubString的方法,这个方法,他的作用就是截取用的,两个参数的是,留下两个参数的截取内容,一个参数的是去掉0到这个参数范围内的内容
这样,去掉这个“,”的方法也有了,还有一个情况,你得考虑清楚,万一你处理的这行数据最后不是“,”,所以这里还得做个判断,判断最后一个字符是否是“,”
大致思路以及需要解决的问题所需要的方法,都已经基本全了,接下来就是代码了
这里我是将这部分代码给封装成了一个方法,传过来的是String类型的数据,传出去是Text类型的数据
public Text text1(String line){
JSONObject jsonObject=JSONObject.fromObject (line);
String [] words=new String[5];
words[2]=jsonObject.getString ("city");
words[0]=jsonObject.getString ("date");
words[3]=jsonObject.getString ("weather");
words[1]=jsonObject.getString ("temp");
words[4]=jsonObject.getString ("wind");
String s1="";
for (int i=0;i<words.length;i++){
s1+=words[i]+",";
}
if (s1.substring (s1.length ()-1).equals (",")){
s1=s1.substring (0,s1.length ()-1);
}
k.set (s1);
return k;
}