简单JSON解析案例出错

JSON解析错误:对象与数组混淆问题
在学习JSON解析时,使用Java的JsonReader处理一个JSON对象时遇到错误。问题出在尝试用beginArray()解析非数组的JSON数据,导致解析失败。修正方法是删除beginArray()和endArray(),或者将JSON数据改为包含多个对象的数组。

在学习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对象组成的数组,就可以了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值