在学习JSON知识时,写了个小案例练手,结果出错了,发现是自己对JsonReader理解不够导致
上代码:
JSON解析类
public class JsonUtil {
public void parseJson(String jsondata) {
// TODO Auto-generated method stub
try {
JsonReader jReader = new JsonReader(new StringReader(jsondata));
jReader.beginArray();
while(jReader.hasNext()){
jReader.beginObject();
while(jReader.hasNext()){
String tagName = jReader.nextName();
if(tagName.equalsIgnoreCase("name")){
System.out.println("name = "+jReader.nextString());
}
if(tagName.equalsIgnoreCase("age")){
System.out.println("age = "+jReader.nextString());
}
}
jReader.endObject();
}
jReader.endArray();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
MainActivity:
public class MainActivity extends Activity {
Button btn = null;
private String jsonData = "{\"name\":\"zhangsan\",\"age\":20}";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
JsonUtil util = new JsonUtil();
util.parseJson(jsonData);
}
});
}
}
错误图:
注意:beginArray方法错误,该方法是JsonReader开始解析json数据数组,但是,我在MainACtivity中给出的只是一个JSon对象而非数组,所以报错。将beginArray和endArray方法去掉,或者将MainActivity中的Json数据改为Json对象组成的数组,就可以了