客户端 接收服务器传过来的 JSON字符串,代码如下
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); String str = (String) ois.readObject();
然后将str传给下一个activity
Intent intent =new Intent(context,Serach_activity.class); Bundle bundle =new Bundle(); bundle.putString("jsondata",str); intent.putExtras(bundle); startActivity(intent);
然后下面是解析json数据::
Bundle bundle=this.getIntent().getExtras(); String jsondata=bundle.getString("jsondata"); JsonObject obj = new JsonParser().parse(jsondata).getAsJsonObject(); Gson gson=new Gson(); List<Map<String,Object>> map = gson.fromJson(jsondata, new TypeToken<List<Map<String, Object>>>(){}.getType()); for(Map<String,Object> map2:map){ bookbean=new BookBean(); bookbean.setBookName(map2.get("book_name").toString()); bookbean.setLocation(map2.get("location").toString()); bookbean.setPublishing_House(map2.get("publishing_house").toString()); bookbean.setBar_Code_Number(map2.get("bar_code_number").toString()); bookbeanlist.add(bookbean); }
运行 就出现了错误,错误代码如下:
抠出来,直观的错误提示是:java.lang.illegalstateexception:Not a JSON Object
用的是gson。本人刚开始学json。求高手指点。网上找了好久也没有解决方法。
解决方案
10
你这从结果看是一个json数组,不是json对象啊.他自然会报错的,你应该用jsonarray 接受,而不是jsonobject 然后循环array分别取出每个jsonobject.
5
http://www.bejson.com/
把 json字符串 复制进去 校验下
把错误改下
把 json字符串 复制进去 校验下
把错误改下
5
你的是jsonArray格式啊,肯定会报错,要用jsonArray解析的。
5
json数组解析
5
你这个是JsonArray不是JSONObject,你可以通过大小括号来判断
10
先把字符串变成jsonarray,再get(0),再像你这么走