解析json数据时首先需要一个org.json包,在开发android中系统已经有了这个包,所以不用再次导入。如果应用中没有这个包就会报错了,需要自己下载导入,
当然首先解析字符串时数据必须是json类型。
JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合。
一个对象以“{”(左括号)开始,“}”(右括号)结束 每个“名称”后跟一个“:”(冒号) “‘名称/值’对”之间使用“,”(逗号)分隔。
当解析json字符串时:(解析对象student)
<span style="font-size:14px;">String str = "{\"student\":{\"name\":\"小胡\",\"age\":12,\"id\":\"123\",\"sex\":\"男\"}}";
try {
JSONObject object = new JSONObject(str);
</span>
<span style="font-size:14px;"><span style="white-space:pre"> </span>//只解析一项字符串,同理将student看作key,其中值看作一个value,则是解析一组字符串了
JSONObject student = object.getJSONObject("student");
String name = student.getString("name");</span>
<span style="font-size:14px;">
int age = student.getInt("age");
String id = student.getString("id");
String sex = student.getString("sex");
Logs.d("name--"+name+"age--"+age+"id--"+id+"sex--"+sex);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}</span>
解析json数组:
<span style="font-size:14px;"><span style="white-space:pre"> </span>JSONObject json = new JSONObject(message); //message所解析的字符串
JSONArray array = json.getJSONArray("content"); //content为json数组内的key值
int num = array.length();
for (int i = 0; i < num; i++) {
JSONObject object = array.getJSONObject(i);
String msg = object.getString("msg");
}</span>
生成json字符串:
<span style="font-size:14px;"><span style="white-space:pre"> </span>JSONObject jsongObject = new JSONObject();
jsongObject.put("code", 1);
jsongObject.put("message", "成功!");</span>
生成json数组形式:
<span style="font-size:14px;"><span style="white-space:pre"> </span>JSONObject object = new JSONObject();
object.put("name", "张三");
object.put("password", "123");
JSONObject object2 = new JSONObject();
object2.put("name", "李四");
object2.put("password", "456");
JSONArray array = new JSONArray();
array.put(0, object);
array.put(1, object2);
JSONObject json = new JSONObject();
json.put("array", array);
Logs.d(json.toString());</span>
<span style="font-size:14px;"><span style="white-space:pre"> </span>String[] list = getContext().getAssets().list("");
for (String string : list) {
Logs.d(string+"\n");
}</span>
当读取Assets中的文件时:
<span style="font-size:14px;"><span style="white-space:pre"> </span>InputStream is = getContext().getAssets().open("user"); //通过流读取文件
byte[] by = new byte[1024];
int num ;
while((num = is.read(by))!=-1){
String str = new String(by, 0, num);
Logs.d(str);
}</span>