json的问题,json问题
客户端 接收服务器传过来的 JSON字符串,代码如下ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
String str = (String) ois.readObject();
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);
}
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。求大神指教。网上找了好久也没有解决方法。
解决方案
把 json字符串 复制进去 校验下
把错误改下 你的是jsonArray格式啊,肯定会报错,要用jsonArray解析的。 json数组解析 你这个是JsonArray不是JSONObject,你可以通过大小括号来判断 先把字符串变成jsonarray,再get(0),再像你这么走
用户评论