在极客学院看了相关视频,觉得还是值得记录一下。
虽然知道大家既然能看到这篇文章,那就至少知道什么是Json了,不过为了文章的完整性,这里还是简单介绍一下Json,大都百度的,可忽略。
Json:JavaScript对象表示法(JavaScript Object Notation)。
Json 是存储和交换文本信息的语法。类似 XML。
Json 比 XML 更小、更快、更易解析。
Json 的数据书写格式为 名称:值。
如:
{ "firstName":"John" , "lastName":"Doe" }
数组形式:
{ "employees": [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName":"Jones" } ] }
简明易懂。
为了android中操作Json数据,我们先准备一个简单的数据,命名为 test.json,并放在新建工程的 assets文件夹下面。
test.json文件里面的json数据就为上面数组。
我们的目的是把 test.json文件里的json数据读出并通过System.out打印到logcat中。
MainActivity.java文件:
package com.android.testjson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
InputStreamReader isr = new InputStreamReader(getAssets().open("test.json"), "UTF-8");
BufferedReader br = new BufferedReader(isr);
String line;
StringBuilder builder = new StringBuilder();
while((line = br.readLine()) != null){
builder.append(line);
}
br.close();
isr.close();
JSONObject root = new JSONObject(builder.toString());
JSONArray array = root.getJSONArray("employees");
for(int i=0;i<array.length();i++){
JSONObject lan = array.getJSONObject(i);
System.out.println("-----------------------");
System.out.println("firstName="+lan.getString("firstName"));
System.out.println("lastName="+lan.getString("lastName"));
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
}
很简单的几句代码,就把json数据成功读取出来了。
个人觉得作为作为一个例子,就相当于一个模板,以后如果用到,放上面一套就好了,节省了时间。