请教一下解析json的问题
来源:互联网 发布:java中反射的应用 编辑:程序博客网 时间:2024/06/05 01:00
为什么我把json直接写死了就能解析出对象来,而如果从网络获取他就显示空指针?
这个是代码
如果我把json这么写死就能正常获得
可是如果我换个方式,我的json我从网上获得
这是从网上获得的代码:
他就会直接崩溃掉,错误信息就是 不是一个json对象:null,
而当我把string json = “”换成 string json;再运行他就是报on a null object reference?空对象?
我想不通了,因为写死的那个json是我用用网络获得的json复制粘贴过去的,也就是说他肯定是获得了的,因为用网络的方法我注释掉下面解析的那块,能够log出来我获得的json,到底哪里的问题?
这个是代码
String json = "{\"recordcount\":4,\"data\":[{\"__type\":\"twr_api.ProfessionModel, twr_api\",\"profession_id\":0,\"profession_name\":\"未定\"},{\"profession_id\":100,\"profession_name\":\"醫生\"},{\"profession_id\":110,\"profession_name\":\"廣告設計師\"},{\"profession_id\":120,\"profession_name\":\"軟件開發\"}]}";
Gson mgson = new Gson();
JsonParser parser = new JsonParser();
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
JsonObject jsonObject = parser.parse(json).getAsJsonObject();
JsonArray jsonArray = jsonObject.getAsJsonArray("data");
Type type = new TypeToken<Map<String,String>>(){}.getType();
for (int i = 1; i<jsonArray.size();i++){
JsonElement element = jsonArray.get(i);
Map<String,String> tmp = mgson.fromJson(element, type);
list.add(tmp);
System.out.println(tmp.get("profession_name"));
}
如果我把json这么写死就能正常获得
可是如果我换个方式,我的json我从网上获得
这是从网上获得的代码:
public class Test extends Activity {
private String URl = "http://120.26.196.99/twr_api/getallprofessions";
private String json = "";
private TextView txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
txt = (TextView) findViewById(R.id.txt);
StringRequest re = new StringRequest(URl, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
json = s;
Log.v("这里", json);
txt.setText(s);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String,String> mheader = new HashMap<String,String>();
mheader.put("Accept","application/json");
return mheader;
}
};
ApplicationController.getInstance().addToRequestQueue(re);
Gson mgson = new Gson();
JsonParser parser = new JsonParser();
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
JsonObject jsonObject = parser.parse(json).getAsJsonObject();
JsonArray jsonArray = jsonObject.getAsJsonArray("data");
Type type = new TypeToken<Map<String,String>>(){}.getType();
for (int i = 1; i<jsonArray.size();i++){
JsonElement element = jsonArray.get(i);
Map<String,String> tmp = mgson.fromJson(element, type);
list.add(tmp);
System.out.println(tmp.get("profession_name"));
}
}
}
他就会直接崩溃掉,错误信息就是 不是一个json对象:null,
而当我把string json = “”换成 string json;再运行他就是报on a null object reference?空对象?
我想不通了,因为写死的那个json是我用用网络获得的json复制粘贴过去的,也就是说他肯定是获得了的,因为用网络的方法我注释掉下面解析的那块,能够log出来我获得的json,到底哪里的问题?
0 0
- 请教一下解析json的问题
- 想请教一下迭代器Iterator的问题?
- 有个问题请教一下
- 请教一下laravel返回status_code值的问题
- 请教一下关于变量的作用域问题
- 请教一下c语言编程问题
- 请教一下
- 请教一下
- 请教一下
- 请教一下
- 请教一下各位 第一次安装mac 版的android studio 出现了一个奇怪的问题
- 请教一下各位 第一次安装mac 版的android studio 出现了一个奇怪的问题
- 请教MySql的问题
- 请教hi3515的问题
- 请教popViewControllerAnimated的问题
- 请教signal的问题
- 各位大哥,请教一下这个有关查询的简单问题,先谢了~
- [VB.NET]请教一下如何解决My.Computer.FileSystem.GetFiles终于到的权限问题
- Python 练习册,每天一个小程序----------000 图片右上角加上红色的数字
- android fragment
- httpget api,4.0中要求在线程中实现
- 一键强制修改任意Mysql数据库的密码,修改任意环境Mysql数据库。
- Codeforces Round #389 (Div. 2, Rated, Based on Technocup 2017 - Elimination Round 3)
- 请教一下解析json的问题
- android TabHost切换导致FragmentActivity重启
- knockout + require + director 构建单页面程序(integration)
- Leetcode First Unique Character in a String
- android webview加载url异常
- 二维数组经典地址问题
- asp页面之间传递值得方法
- Leetcode 73. Set Matrix Zeroes
- 关于cocos2dxActivity监听不到返回健的问题