Android的JSON解析这个,怎么样? [英] Android JSON parse this, how?

查看:165
本文介绍了Android的JSON解析这个,怎么样?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  [
    {
        hotelid:[
            {
                hotelid:1,
                名:AAA,
                code:111
                价格:111
            },
            {
                hotelid:2,
                名:BBB,
                code:112
                价格:211
            },
            {
                hotelid:4,
                名:CCC,
                code:42,
                价格:411
            }...

我有这样的JSON,我怎么能分析它在android系统?我试过,但我只得到错误。

code:

  @覆盖
公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);    mycontext =这一点;    examineJSONFile();
}类结果
{
  清单<酒店及GT;酒店; //名称相匹配的JSON名  @覆盖
  公共字符串的ToString(){返回hotel.toString();}
}
级酒店
{
  字符串code; //名称相匹配的JSON名
  字符串名称; //名称相匹配的JSON名
  串hotelid; //名称相匹配的JSON名  @覆盖
  公共字符串的toString()
  {
    返回的String.format(hotelid:{code =%s的,名称=%S,hotelid =%S},code,名字,hotelid);
  }
}
无效examineJSONFile(){    InputStream为= this.getResources()openRawResource(R.raw.promo)。
    字符串s;
    尝试{
        S = HttpConnect.streamToString(是);        ObjectMapper映射器=新ObjectMapper();
        mapper.setVisibilityChecker(mapper.getVisibilityChecker()withFieldVisibility(Visibility.ANY));        结果[] =结果mapper.readValue(S,结果[]类);
        结果结果=结果[0];        Log.e(RES,result.toString()+);
    }赶上(例外五){
        Log.e(犯错E +);
    }
}


  

ERROR / ERR(23124):组织codehaus.jackson.map.JsonMappingException:能
  无法反序列化类com.android.asd.asdStart $结果(类型
  非静态成员类)作为一个Bean



解决方案

我试图解析JSON字符串,我得到了一个解决方案也请试试这个:

 字符串解析= \"[{\\\"hotelid\\\":[{\\\"hotelid\\\":\\\"1\\\",\\\"name\\\":\\\"aaa\\\",\\\"$c$c\\\":\\\"111\\\",\\\"price\\\":\\\"111\\\"},{\\\"hotelid\\\":\\\"2\\\",\\\"name\\\":\\\"bbb\\\",\\\"$c$c\\\":\\\"112\\\",\\\"price\\\":\\\"211\\\"},{\\\"hotelid\\\":\\\"4\\\",\\\"name\\\":\\\"ccc\\\",\\\"$c$c\\\":\\\"42\\\",\\\"price\\\":\\\"411\\\"}]}]\";
            尝试{
                JSONArray menuObject =新JSONArray(分析);
                的for(int i = 0; I< menuObject.length();我++){
                    。字符串酒店= menuObject.getJSONObject(I).getString(hotelid)的toString();
                    的System.out.println(酒店=+酒店);
                    JSONArray menuObject1 =新JSONArray(酒店);
                    对于(INT J = 0; J< menuObject1.length(); J ++){
                        。字符串hotelid = menuObject1.getJSONObject(J).getString(hotelid)的toString();
                        的System.out.println(hotelid ==+ hotelid);                        字符串名称= menuObject1.getJSONObject(J).getString(名称)的toString()。
                        的System.out.println(名==+姓名);                        字符串code = menuObject1.getJSONObject(J).getString(code)的toString()。
                        的System.out.println(code ==+ code);                        串价格= menuObject1.getJSONObject(J).getString(价格)的toString()。
                        的System.out.println(价格==+价格);                    }
                }            }赶上(JSONException E){
                e.printStackTrace();
            }

 [
    {
        "hotelid": [
            {
                "hotelid": "1",
                "name": "aaa",
                "code": "111",
                "price": "111"
            },            
            {
                "hotelid": "2",
                "name": "bbb",
                "code": "112",
                "price": "211"
            },
            {
                "hotelid": "4",
                "name": "ccc",
                "code": "42",
                "price": "411"
            }

...

I have this JSON, how can I parse it in android? I tried it, but i only get errors.

code:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mycontext=this;

    examineJSONFile();
}

class Result
{
  List<Hotel> hotel; // name matches name in JSON

  @Override
  public String toString() {return hotel.toString();}
}


class Hotel
{
  String code;          // name matches name in JSON
  String name;          // name matches name in JSON
  String hotelid;       // name matches name in JSON

  @Override
  public String toString()
  {
    return String.format("hotelid:{code=%s, name=%s, hotelid=%s}", code, name, hotelid);  
  }
}


void examineJSONFile()    {

    InputStream is = this.getResources().openRawResource(R.raw.promo);
    String s;
    try {
        s = HttpConnect.streamToString(is);

        ObjectMapper mapper = new ObjectMapper();
        mapper.setVisibilityChecker(mapper.getVisibilityChecker().withFieldVisibility(Visibility.ANY));

        Result[] results = mapper.readValue(s, Result[].class);
        Result result = results[0];

        Log.e("res", result.toString()+"");


    } catch (Exception e) {
        Log.e("err", e+"");
    }


}

ERROR/err(23124): org.codehaus.jackson.map.JsonMappingException: Can not deserialize Class com.android.asd.asdStart$Result (of type non-static member class) as a Bean

解决方案

I have tried to parse that JSON string and I got one solution please try this also:

String parse = "[{\"hotelid\":[{\"hotelid\":\"1\",\"name\":\"aaa\",\"code\":\"111\",\"price\":\"111\"},{\"hotelid\":\"2\",\"name\":\"bbb\",\"code\":\"112\",\"price\":\"211\"},{\"hotelid\":\"4\",\"name\":\"ccc\",\"code\":\"42\",\"price\":\"411\"}]}]";
            try {
                JSONArray menuObject = new JSONArray(parse);
                for(int i=0;i<menuObject.length();i++){
                    String hotel =    menuObject.getJSONObject(i).getString("hotelid").toString();
                    System.out.println("hotel="+hotel);
                    JSONArray menuObject1 = new JSONArray(hotel);
                    for(int j=0; j<menuObject1.length();j++){
                        String hotelid =    menuObject1.getJSONObject(j).getString("hotelid").toString();
                        System.out.println("hotelid=="+hotelid);

                        String name =    menuObject1.getJSONObject(j).getString("name").toString();
                        System.out.println("name=="+name);

                        String code =    menuObject1.getJSONObject(j).getString("code").toString();
                        System.out.println("code=="+code);

                        String price =    menuObject1.getJSONObject(j).getString("price").toString();
                        System.out.println("price=="+price);

                    }
                }

            } catch (JSONException e) {
                e.printStackTrace();
            }

这篇关于Android的JSON解析这个,怎么样?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆