Code Bye

json的问题

客户端 接收服务器传过来的 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字符串 复制进去 校验下
把错误改下

5

你的是jsonArray格式啊,肯定会报错,要用jsonArray解析的。

5

json数组解析

5

你这个是JsonArray不是JSONObject,你可以通过大小括号来判断

10

先把字符串变成jsonarray,再get(0),再像你这么走

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明json的问题