首先介绍下JsON的定义,JsON是JavaScript Object Notation的缩写。
一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JsON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。
JsON的结构:
(1) name/Value Pairs(无序的):类似所熟知的Keyed List、 Hash table、disctionary和Associative array。在AndroID平台中同时存在另外一个类 "Bundle",某种程度上具有相似的行为。
(2) Array(有序的):一组有序的数据列表。
一: Json的特性和在数据交互中的地位就不用说了,直接看案例。
首先在androID studio中创建assets文件目录,用于存放Json数据文件,androID studio 1.3 默认项目文件目录下是没有assets文件夹的,
所以需要我们进行创建,创建方法如下:
创建好assets文件目录以后,在其目录下创建一个Text.Json文件。
二:如何获得assets文件目录下的Json数据:
在eclipse下是:inputStreamReader(getAssets().open("Text.Json"),"UTF-8");获得该文件数据,并以inputStream返回数据。
而在androID studio则是通过:JsonLearn.this.getClass().getClassLoader().getResourceAsstream("assets/" + "Text.Json");返回相应inputStream.
三:案例展示:
1:案例项目app界面如下,通过按钮分别实现Json数据的读取和创建,并展示在TextVIEw中。
2:代码如下:
package activity.cyq.datalrearn; import androID.support.v.app.AppCompatActivity; import androID.os.Bundle; import androID.vIEw.VIEw; import androID.Widget.TextVIEw; import org.Json.JsONArray; import org.Json.JsONException; import org.Json.JsONObject; import java.io.BufferedReader; import java.io.IOException; import java.io.inputStream; import java.io.inputStreamReader; public class JsonLearn extends AppCompatActivity { private TextVIEw writeText,readText; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_Json_learn); readText = (TextVIEw) findVIEwByID(R.ID.readJsonText); writeText = (TextVIEw) findVIEwByID(R.ID.writeJsonText); /*读取Json数据*/ findVIEwByID(R.ID.readJsioBtn).setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { /*获取到assets文件下的TExt.Json文件的数据,并以输出流形式返回。*/ inputStream is = JsonLearn.this.getClass().getClassLoader().getResourceAsstream("assets/" + "Text.Json"); inputStreamReader streamReader = new inputStreamReader(is); BufferedReader reader = new BufferedReader(streamReader); String line; StringBuilder stringBuilder = new StringBuilder(); try { while ((line = reader.readline()) != null) { // stringBuilder.append(line); stringBuilder.append(line); } reader.close(); reader.close(); is.close(); } catch (IOException e) { e.printstacktrace(); } try { JsONObject person = new JsONObject(stringBuilder.toString()); JsONArray infArray = person.getJsONArray("inf"); for (int i = ; i < infArray.length(); i++) { JsONObject inf_Array = infArray.getJsONObject(i); readText.append("name:" + inf_Array.getString("name") + "\n"); readText.append("IDCard:" + inf_Array.getString("IDCard")); readText.append("age:" + inf_Array.getInt("age")); readText.append("marrIEd:" + inf_Array.getBoolean("marrIEd")); } } catch (JsONException e) { e.printstacktrace(); } } }); /*创建Json数据并显示*/ findVIEwByID(R.ID.writeJsioBtn).setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { try { JsONObject inf = new JsONObject(); inf.put("number",); JsONArray array = new JsONArray(); JsONObject arr_ = new JsONObject(); arr_.put("name","张三"); arr_.put("age",); arr_.put("IDCard","XC"); arr_.put("marrIEd",true); JsONObject arr_ = new JsONObject(); arr_.put("name","李四"); arr_.put("age","@DC"); arr_.put("marrIEd",true); array.put(,arr_); array.put(,arr_); inf.put("inf",array); writeText.setText(inf.toString()); } catch (JsONException e) { e.printstacktrace(); } } }); } }
以上是通过AndroID中Json数据读取与创建的方法,希望能够帮助到大家,在实际的项目开发中可以通过Gson(谷歌)Fast-Json(阿里巴巴)这两款Json处理API。
总结以上是内存溢出为你收集整理的Android中Json数据读取与创建的方法全部内容,希望文章能够帮你解决Android中Json数据读取与创建的方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)