JSON(JavaScript Object Notation)
——JSON是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读。尽管
JSON是在JavaScript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。Android2.3之后可以在Android中直接解析JSON。
——作用:在服务器与客户端之间进行数据传递
与XML比较: 比XML更轻便,效率更高
比XML可读性、描述性更差
步骤:
1.自己写一个JSON数据:
public static final String JSONDATA="{name:张三,age:26,phone:[131,132],score:{语文:100,数学:60,理综:{化学:120,物理:150}}}";
(1)JSONTokener:
JSONTokener jsonTokener=new JSONTokener(JSONDATA);()JSONObiect:
JSONObject jsonObject=new JSONObject(JSONDATA);
—解析JSON:可以使用以下两种方式来解析
——JSONObject代表是一个JSON对象{}
JSONArray代表是一个数组对象[]
SONObject、JSONArray
JSONObject rootObj=new JSONObject(json);
Xxx n=rootObj.getXxx(String key)取相应的数据
——JSONTokener的解析方式:
JSONTokener jsonParser = new JSONTokener(String JSON);
// 此时还未读取任何json文本,直接读取就是一个JSONObject对象。
// 如果此时的读取位置在"name" : 了,那么nextValue就是"yuanzhifei89"
JSONObject person = (JSONObject) jsonParser.nextValue();
接下来就是JSONObject的方式解析了
public class MainActivity extends Activity { public static final String JSONDATA="{name:张三,age:26,phone:[131,132],score:{语文:100,数学:60,理综:{化学:120,物理:150}}}"; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv=(TextView) findViewById(R.id.tv); } public void btn1(View view){ //获得JSON对象 try { StringBuffer stringBuffer=new StringBuffer(); //1.JSONObject jsonObject=new JSONObject(JSONDATA); //2.JSONTokener JSONTokener jsonTokener=new JSONTokener(JSONDATA); JSONObject jsonObject=(JSONObject) jsonTokener.nextValue(); stringBuffer.append("name:"+jsonObject.getString("name")+"\n"); stringBuffer.append("age:"+jsonObject.getString("age")+"\n"); JSONArray phoneArray=jsonObject.getJSONArray("phone"); stringBuffer.append("phone:"+phoneArray.getString(0)+" "+phoneArray.getString(1)+"\n"); JSONObject scoreObject=jsonObject.getJSONObject("score"); stringBuffer.append("语文:"+scoreObject.getString("语文")+"\n"); stringBuffer.append("数学:"+scoreObject.getString("数学")+"\n"); JSONObject lizongObject=scoreObject.getJSONObject("理综"); stringBuffer.append("化学:"+lizongObject.getString("化学")+"\n"); tv.setText(stringBuffer.toString()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
布局文件activity_main:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="btn1" android:text="JSON解析" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv"/> </LinearLayout>
要源码的:下载