日期:2014-05-16  浏览次数:20345 次

json解析和处理
  在android调用webservice时,经常要对json的格式进行处理,现在有两种方法

  去处理:

  1 使用JSONObject 和 JSONTokener去解析

  2 使用GSON库

  先看第一种方法,假如有如下的json字符串:

java代码:

{
  “name”: “myName”,
  “message”: ["myMessage1","myMessage2"],
  “place”: “myPlace”,
  “date”: ”thisDate”
  }

       第一种解决方法:

java代码:

public class main extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  try {
  TextView tv = (TextView)findViewById(R.id.TextView01);
  String json = “{”
  + “ ”name”: ”myName”, ”
  + “ ”message”: [\"myMessage1\",\"myMessage2\"],”
  + “ ”place”: ”myPlace”, ”
  + “ ”date”: ”thisDate” ”
  + “}”;
  /* Create a JSON object and parse the required values */
  JSONObject object = (JSONObject) new JSONTokener(json).nextValue();
  String name = object.getString(“name”);
  String place = object.getString(“place”);
  String date = object.getString(“date”);
  JSONArray message = object.getJSONArray(“message”);
  tv.setText(“Name: “+ name +” ”);
  tv.append(“Place: “+ place +” ”);
  tv.append(“Date: “+ date +” ”);
  for(int i=0;i< p>
  {
  tv.append(“Message: “+ message.getString(i) +” ”);
  }

       2 使用GSON类库
  GOOGLE提供的gson类库,地址在:

java代码:

public class JSON_structure {
  public String name;
  public String place;
  public String date;
  public String[] message;
  }

       这其实是个POJO类

java代码:

try {
  /* Inflate TextView from the layout */
TextView tv = (TextView)findViewById(R.id.TextView01);
  /* JSON data considered as an example. Generally this data is obtained
  from a web service.*/
  String json = “{”
  + “ ”name”: ”myName”, ”
  + “ ”message”: [\"myMessage1\",\"myMessage2\"],”
  + “ ”place”: ”myPlace”, ”
  + “ ”date”: ”thisDate” ”
  + “}”;
  Gson gson = new Gson();
  JSON_structure obj= gson.fromJson(json, JSON_structure.class);
  tv.setText(“Name: “+ obj.name +” ”);
  tv.append(“Place: “+ obj.place +” ”);
  tv.append(“Date: “+ obj.date +” ”);
  for(int i=0;i< p>
  {
  tv.append(“Message: “+ obj.message +” ”);
  }
  }
  catch(Exception ex){ex.printStackTrace();}
  }
  } catch (JSONException e) {e.printStackTrace();}
  catch(Exception ex){ex.printStackTrace();}
  }
  }