精华内容
下载资源
问答
  • Gson解析json文件

    千次阅读 2017-03-06 16:18:14
    ##使用gson解析json文件 **json的格式有两种:** **1. {}类型,及数据用{}包含;** **2. []类型,即数据用[]包含;**    下面用个例子,简单的介绍gson如何解析json,仅使用~  先发两个json 内容  1、最...

    ##使用Gson解析json文件

    **json的格式有两种:**

    **1. {}类型,及数据用{}包含;**

    **2. []类型,即数据用[]包含;**



     
     下面用个例子,简单的介绍gson如何解析json,仅使用~

     先发两个json 内容 

    1、最外层是{}

        {    
            "resp": "ok",
            "result": {
                "date": "2013-4-19 16:55:58",
                "focus": [
                    {
                        "summary": "简介",
                        "title": "标题",
                        "url": "http://www.ceshi.com"
                    },
                    {
                        "summary": "简介22",
                        "title": "标题22",
                        "url": "http://www.ceshi22.com"
                    }
                ],
                "items": [
                    {
                        "id": "11",
                        "name": "名称",
                        "price": "88.88"
                    },
                    {
                        "id": "22",
                        "name": "名称22",
                        "price": "100"
                    }
                ]
            }    
        }


    2、外层是[]

        [    
            {
                "addr": "北京",
                "age": "22",
                "name": "zeng"
            },
            {
                "addr": "上海",
                "age": "20",
                "name": "zhang"
            },
            {
                "addr": "深圳",
                "age": "25",
                "name": "wang"
            }    
        ]

    ###**一、使用Gson,解析,关键的就是定义好JavaBean类对象**

    1、***定义{}类型的JavaBean类***

    Bean.java

        public class Bean {  //若实现Serializable接口,则不用写下面的SerializedName("字段名"),但成员变量名称必须与json中一样
        //  @SerializedName("resp")  
        //  private String respone;//假如变量命名与解析数据不同,则加上@SerializedName("")  
        private String resp;  
        private Result result;  
        //....下面省略 set ,get  

    //resultBean类

    Result.java
     

        public class Result {    
            private String date;  
            private List<FocusItem> focus;  
            private List<Item> items;  
        }
    FocusItem.java

        public class FocusItem {        
            private String title;  
            private String summary;  
            private String url;  
        }
    Item.java

        public class Item {            
            private String name;  
            private int id;  
            private float price; 
        } 

     2、***定义{}类型的JavaBean类***

      Info.java

        public class Info {    
            private String name;  
            private int age;  
            private String addr; 
        } 


    ###**二、解析代码,一个最外层是{}  一个是[]**


        private void parse() {  
            Gson gson = new Gson();  
            switch (type) { 
            //最外层是{},封装为一个对象
            case OBJ:  
                Bean fromJson = gson.fromJson(readContent, Bean.class);  
                System.out.println(fromJson.toString());  
                break;  
            //最外层是[],封装为一个数组对象
            case ARR:  
                Type type = new TypeToken<List<Info>>() {}.getType();  
                Object fromJson2 = gson.fromJson(readContent, type);  
                List<Info> list = (List<Info>) fromJson2; 
                break; 
            }
        }

    展开全文
  • 通过Gson解析Json文件

    2015-01-24 19:59:05
    通过Gson解析Json文件,相关博文:http://www.cnblogs.com/tianzhijiexian/p/4246497.html
  • ##使用gson解析json文件 **json的格式有两种:** **1. {}类型,及数据用{}包含;** **2. []类型,即数据用[]包含;** 下面用个例子,简单的介绍gson如何解析json,仅使用~ 先发两个json 内容 ...

    ##使用gson解析json文件

    **json的格式有两种:**

    **1. {}类型,及数据用{}包含;**

    **2. []类型,即数据用[]包含;**



     
     下面用个例子,简单的介绍gson如何解析json,仅使用~

     先发两个json 内容 

    1、最外层是{}

        {    
            "resp": "ok",
            "result": {
                "date": "2013-4-19 16:55:58",
                "focus": [
                    {
                        "summary": "简介",
                        "title": "标题",
                        "url": "http://www.ceshi.com"
                    },
                    {
                        "summary": "简介22",
                        "title": "标题22",
                        "url": "http://www.ceshi22.com"
                    }
                ],
                "items": [
                    {
                        "id": "11",
                        "name": "名称",
                        "price": "88.88"
                    },
                    {
                        "id": "22",
                        "name": "名称22",
                        "price": "100"
                    }
                ]
            }    
        }


    2、外层是[]

        [    
            {
                "addr": "北京",
                "age": "22",
                "name": "zeng"
            },
            {
                "addr": "上海",
                "age": "20",
                "name": "zhang"
            },
            {
                "addr": "深圳",
                "age": "25",
                "name": "wang"
            }    
        ]

    ###**一、使用Gson,解析,关键的就是定义好JavaBean类对象**

    1、***定义{}类型的JavaBean类***

    Bean.java

        public class Bean {  //若实现Serializable接口,则不用写下面的SerializedName("字段名"),但成员变量名称必须与json中一样
        //  @SerializedName("resp")  
        //  private String respone;//假如变量命名与解析数据不同,则加上@SerializedName("")  
        private String resp;  
        private Result result;  
        //....下面省略 set ,get  

    //resultBean类

    Result.java
     

        public class Result {    
            private String date;  
            private List<FocusItem> focus;  
            private List<Item> items;  
        }
    FocusItem.java

        public class FocusItem {        
            private String title;  
            private String summary;  
            private String url;  
        }
    Item.java

        public class Item {            
            private String name;  
            private int id;  
            private float price; 
        } 

     2、***定义{}类型的JavaBean类***

      Info.java

        public class Info {    
            private String name;  
            private int age;  
            private String addr; 
        } 


    ###**二、解析代码,一个最外层是{}  一个是[]**


        private void parse() {  
            Gson gson = new Gson();  
            switch (type) { 
            //最外层是{},封装为一个对象
            case OBJ:  
                Bean fromJson = gson.fromJson(readContent, Bean.class);  
                System.out.println(fromJson.toString());  
                break;  
            //最外层是[],封装为一个数组对象
            case ARR:  
                Type type = new TypeToken<List<Info>>() {}.getType();  
                Object fromJson2 = gson.fromJson(readContent, type);  
                List<Info> list = (List<Info>) fromJson2; 
                break; 
            }
        }

     

    转载于:https://www.cnblogs.com/tittles0k/p/5621362.html

    展开全文
  • Gson解析Json文件,实现案例

    千次阅读 2018-09-20 16:01:39
    1、首先先看json文件,这个json并不算复杂分三层 2、分析完json文件我们开始创建Bean,json其实可以自动生成,由于我用的版本较低的eclipse所以手动敲的,注释不全见谅 public class PersonsBean { // 属性私有化,参数...

    1、首先先看json文件,这个json并不算复杂分三层
    在这里插入图片描述
    2、分析完json文件我们开始创建Bean,json其实可以自动生成,由于我用的版本较低的eclipse所以手动敲的,注释不全见谅
    public class PersonsBean {
    // 属性私有化,参数名一定要与json文件保持一致
    private String info;
    private String status;
    private DataBean data;

    // set、get方法
    public String getInfo() {
    	return info;
    }
    
    public void setInfo(String info) {
    	this.info = info;
    }
    
    public String getStatus() {
    	return status;
    }
    
    public void setStatus(String status) {
    	this.status = status;
    }
    
    public DataBean getData() {
    	return data;
    }
    
    public void setData(DataBean data) {
    	this.data = data;
    }
    
    // 静态内部类
    public static class DataBean {
    	private String count;
    	private String type;
    	private List<PhonesBean> phones;
    
    	public String getCount() {
    		return count;
    	}
    
    	public void setCount(String count) {
    		this.count = count;
    	}
    
    	public String getType() {
    		return type;
    	}
    
    	public void setType(String type) {
    		this.type = type;
    	}
    
    	public List<PhonesBean> getPhones() {
    		return phones;
    	}
    
    	public void setPhones(List<PhonesBean> phones) {
    		this.phones = phones;
    	}
    	// 静态内部类
    	public static class PhonesBean {
    		private String brand;
    		private String name;
    		private String price;
    
    		public String getBrand() {
    			return brand;
    		}
    
    		public void setBrand(String brand) {
    			this.brand = brand;
    		}
    
    		public String getName() {
    			return name;
    		}
    
    		public void setName(String name) {
    			this.name = name;
    		}
    
    		public String getPrice() {
    			return price;
    		}
    
    		public void setPrice(String price) {
    			this.price = price;
    		}
    
    	}
    }
    

    }
    3、我用的Fragment写的所以下面是Fragment,和activity不同的就是获取上下文
    布局很简单相信一看就知道只有一个ListView控件

    public class AFragment extends Fragment {
    private List<PersonsBean.DataBean.PhonesBean> list;
    
    @Override
    public View onCreateView(LayoutInflater inflater,
    		@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    	View view = View.inflate(getActivity(), R.layout.fragment1, null);
    	ListView listView = (ListView) view.findViewById(R.id.listView_f1);
    	initDatas();
    	//设置适配器
    	AFAdapter afAdapter = new AFAdapter(list, getActivity());
    	listView.setAdapter(afAdapter);
    	return view;
    }
    
    private void initDatas() {
    	// 从sd卡中读取json文件并Gson解析
    	File file = new File(Environment.getExternalStorageDirectory(),
    			"persons.json");
    	// 读取文件
    	try {
    		BufferedReader bufferedReader = new BufferedReader(
    				new InputStreamReader(new FileInputStream(file)));
    		// 创建StringBuffer
    		StringBuffer stringBuffer = new StringBuffer();
    		String temp = "";
    		try {
    			// 一行一行的读
    			while ((temp = bufferedReader.readLine()) != null) {
    				stringBuffer.append(temp);
    			}
    			String presonsString = stringBuffer.toString();
    			// 解析,创建Gson,需要导入gson的jar包
    			Gson gson = new Gson();
    			PersonsBean fromJson = gson.fromJson(presonsString,
    					PersonsBean.class);
    			// 得到list数据
    			list = fromJson.getData().getPhones();
    
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	} catch (FileNotFoundException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
    }
    

    }
    适配器中的代码,都是一样的这里我们做了优化
    public class AFAdapter extends BaseAdapter {
    private List<PersonsBean.DataBean.PhonesBean> list;
    private Context mContext;

    public AFAdapter(List<PhonesBean> list, Context mContext) {
    	super();
    	this.list = list;
    	this.mContext = mContext;
    }
    
    @Override
    public int getCount() {
    	// TODO Auto-generated method stub
    	return list.size();
    }
    
    @Override
    public Object getItem(int position) {
    	// TODO Auto-generated method stub
    	return list.get(position);
    }
    
    @Override
    public long getItemId(int position) {
    	// TODO Auto-generated method stub
    	return position;
    }
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    	ViewHolder holder;
    	if (convertView == null) {
    		convertView = View.inflate(mContext, R.layout.a_l_item, null);
    		holder = new ViewHolder();
    		holder.brand = (TextView) convertView.findViewById(R.id.brand_al);
    		holder.name = (TextView) convertView.findViewById(R.id.name_al);
    		holder.price = (TextView) convertView.findViewById(R.id.price_al);
    		convertView.setTag(holder);
    	} else {
    		holder = (ViewHolder) convertView.getTag();
    	}
    	// 设置内容
    	PhonesBean phonesBean = list.get(position);
    	holder.brand.setText(phonesBean.getBrand());
    	holder.name.setText(phonesBean.getName());
    	holder.price.setText(phonesBean.getPrice());
    	return convertView;
    }
    
    class ViewHolder {
    	TextView brand, name, price;
    }
    

    }

    展开全文
  • 首先看这次举例的Json文件,我觉得文件不应该太多无关紧要的影响阅读的东西,但是也需要具有概括性,所以自己编写了一个Json文件,然后试着自己去解析 { "name":"jiangker", "age":18, "love":["run","swmmnig"], ...

    首先看这次举例的Json文件,我觉得文件不应该太多无关紧要的影响阅读的东西,但是也需要具有概括性,所以自己编写了一个Json文件,然后试着自己去解析

    {
    "name":"jiangker",
    "age":18,
    "love":["run","swmmnig"],
    "friends":[
    {
    "name":"li",
    "age":16
    },
    {
    "name":"power",
    "age":17
    },
    {
    "name":"tuo",
    "age":19
    }]
    }

    首先看我对于Json文件解析的总结,就是大括号表示一个类,大括号中的元素就是类中的变量,中括号表示的就是一个集合。

    比如说这个Json文件其中的name、age、love、friends就是其中的变量。而对于这些成员变量来说name就是一个String类型的,age就是一个int类型的,love就相当于一个String类型的数组,其中有两个元素。对于看似复杂的friends也是,是一个特殊的Friends类别的集合。用这种方式理解,之后的更复杂的类型也可以简化成这些东西。

     

    JSONObject解析

    对于这种解析方式来说,这是一种谷歌自带的解析方式,也不需要去添加资源包就可以直接使用。Json文件无非就分为类和集合,对于类来说使用JSONObject去获取,JSONObject自带很多种类型的元素获取方式

            JSONObject jsonObject = new JSONObject(data);
            String show = jsonObject.getString("name");

    对于集合来说就可以使用JSONArray去解析,首先是获取到这个集合的整体的字符串

    JSONObject jsonObject = new JSONObject(data);
    String show = jsonObject.getString("love");

    然后再通过用JSONArray去解析成数组

     JSONArray jsonArray = new JSONArray(show);

    然后再通过for循环去遍历这个jsonArray,但是这里的遍历不支持foreach的方式去进行

    for(int i = 0; i < jsonArray.length(); i++){
       show = (String)jsonArray.get(i);
    }

    这里获取可以直接使用getString去获取String对象,也可以使用get去获取一个Object对象来强转。

    对于集合中的元素是一个特殊类的对象的时候,就可以在for循环中使用getJSONObject去获取这个对象,然后开始用之前同样的方法去解析这个JSONObject

    for(int i = 0; i < jsonArray.length(); i++){
        JSONObject json = jsonArray.getJSONObject(i);
        show = json.getString("name");
    }

    GSON解析

    要使用Gson首先就是添加依赖库

    implementation 'com.google.code.gson:gson:2.8.4'

    然后用Gson去解析Json,主要的问题就是Java Bean的编写,如果看了一下之前对于Json文件的分析,在这里编写Java Bean就会比较容易了,反正总的来说就是遇到大括号就理解是一个类,遇到中括号就当作是一个集合,所以看下面的代码

    public class Person {
        
        private String name;
        private int age;
        private String[] love;
        private Friends[] friends;
    
        class Friends{
            
            private String name;
            private int age;
    
        }
    }
    

    这里省略了所有变量的Get和Set方法,方便于去观察里面的结构。

    然后最后就是

    Gson gson = new Gson();
    //常用的fromJson方法就是这样,第一个为获取到的String类型的数据,第二个参数为刚才编辑的Java Bean类,返回的就是一个类的实例
    Person person = gson.fromJson(data,Person.class);
    

    然后就可以用这个对象去获取自己想要的其中的数据了。

     

    对于具体怎么去使用GSON这个库,相信网上有太多太多这方面的东西了,这篇文章主要就是去分析Json文件,方便理解解析格式的编写。因为这两天想找具体这样的的确没找到,要么是Json文件太复杂篇幅太长以及都是被一笔带过了,仿佛没人遇到这方面的问题。

    展开全文
  • ·在安卓中,可以使用第三方的Gson解析json文件。 ·以下是解析保存了天气信息的json文件过程: 1、向当前项目中引入Gson的第三方包。引入方法:https://blog.csdn.net/qq_36418170/article/details/81430095...
  • 使用Gson 解析json文件

    2014-11-30 10:47:49
    近期工作中使用json文件做了配置文件 test.json { "product_01":[{"name1":"computer"},{"price1":"4198.00"},{"makeDate":"2014-07-17"...
  • 使用GSON解析JSON文件

    2019-10-09 02:44:50
    <App> appList=gson.fromJson(jsonData, new TypeToken<List<App>> (){}.getType()); for (App app:appList){ Log.d( "MainActivity","id is "+ app.getId()); Log.d( "MainActivity","version is "+ app....
  • * 获取网络的json文件 * @param url * @return * @throws ClientProtocolException * @throws IOException */ public static String getJSONData(String url) throws ClientProtocolExceptio...
  • Gson解析json文件

    2013-06-30 23:08:30
    一般解析json方法自己写起来较为繁琐,利用开源的API可以节省很多事,达到快速的开发。1) 自己写的代码: 例如: private void parserJSON(String strJSON) { try { JSONArray jsonArray = new JSONAr...
  • gson.toJson 把字符串生成Json格式字符串gson.fromJsonJson格式字符串转成List,对象等例如:User user=gson.from("str",User.class); 解析出来的是User类型gson.from("",Integer.class) .....
  • 使用Gson解析JSON数据,Gson下载,json数据解析,java解析json 1:Gson下载 1.1:maven仓库 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId>...
  • android Zip压缩 删除文件 Gson解析Json
  • GSON 解析 JSON

    2018-11-02 15:14:39
    解析assets目录下的Json文件 ## Json 介绍 Json 全称 JavaScript Object Natation ,用来描述数据结构,它是基于纯文本的数据格式,是一种轻量级的数据交换格式。广泛应用于 服务端 与 客户端 的数据交互。 格式...
  • Android使用gson解析json数组如何获取json数组的长度例外: - > org.json.JSONException:不是原始数组:类org.json.JSONArray,这里是我的代码private ArrayList parseJson(JSONArray res...
  • gson 解析jsonWelcome to Gson Example Tutorial. In last post we looked at the Java JSON API and you can easily tell that it’s not convenient to use it. Whether you have to convert JSON to Java Object ...
  • GSON解析JSON

    2016-06-26 16:14:40
    使用谷歌的gson解析json  * 谷歌的gson.jar  *  * 总结:  * 1、Gson类对象中可以添加json文件的对象类型和数组类型  * 2、可以把json文件转换为java的对象(包括集合),或者java的对象(包括集合)转换为...
  • Gson解析JSON

    2021-04-24 16:57:49
    有时在解析json数据中的字段key是动态可变的时候,由于Gson是使用静态注解的方式来设置实体对象的,因此我们很难直接对返回的类型来判断。但Gson在解析过程中如果不知道解析的字段,就会将所有变量存储在一个Map中,...
  • GSON解析json数据详解

    万次阅读 2016-06-13 16:13:51
    Gson 解析 和 格式化 Gson 格式化 Gson 解析 Json 介绍 Json 全称 JavaScript Object Natation ,用来描述数据结构,它是基于纯文本的数据格式,是一种轻量级的数据交换格式。广泛应用于 服务端 与 ...
  • Gson 解析Json数据

    2017-03-13 23:59:00
    Java-json系列(一):用GSON解析Json格式数据  GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用。如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在...
  • Eclipse和Android Studio下使用Google Gson解析Json数据示例Eclipse和Android Studio下使用Google Gson解析Json数据示例 一Eclipse下使用Google Gson解析Json数据示例 Gson jar包 新建Json数据所对应的Gson实体类 ...
  • Gson解析Json

    2016-07-19 15:37:54
    JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。...使用一种谷歌提供的工具: gson解析如下json文件:{"retcode":200
  • Gson是更流行的解析json的库里,我自己一把很喜欢用Gson来解析,因为直接可以写对象和json文件相对应对于一个标准的后台返回:{"data":{"product_info":{"name":"澳斯贝贝婴儿长袖水晶绒睡袋100cm4","image":...
  • gson解析json

    千次阅读 2017-05-12 17:33:14
    json介绍JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。... 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。现在大部分APP都使用json给前端返回数据。gs
  • Gson解析json

    2020-08-09 23:06:37
    首先我们需要导入gson的jar包,因为gson解析方法不是java官方的而是谷歌提供的。 一.把json数据转成java对象 首先因为已经手动导入了jar包,现在只需创建解析器对象,当然首先得有一个json类型的文件地址,和文件...
  • Gson解析json

    2019-10-09 02:01:42
    GSON:谷歌的一款开源项目,主要用于解析json数据,有很多很友好的个性化设置  思想:把json字符串与java对象相关联  序列化:把java对象转换成json字符串  反序列化:把json字符串转换成java对象 使用...
  • 使用GSON解析JSON数据

    千次阅读 2019-07-18 15:51:30
    GSON是谷歌提供的一个开源库,可以用来解析JSON数据 不过GSON并没有被添加到Android官方的API中,所以如果要使用这个开源库,我们就要先添加依赖,编辑app/build.gradle文件,在dependencies闭包中添加如下内容: ...
  • Gson解析Json数据

    2014-12-07 10:36:48
    最近做个项目,需要校验服务器日志(json)中每个字段的值,本来是用正则表达式来取字段,然后进行分割...接下来我会介绍通过gson解析json数据如下面我们要解析的一个json数据: {"a":"100","b":[{"b1":"b_value11",

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,297
精华内容 6,518
关键字:

gson解析json文件