1-SIII--Json在Android中的使用--Gson

Json 是什么?
一开始在Android,对我来说它是一个有规则个字符串。
当我深入JavaScript后,感觉它越来越有意思,当成一个对象来用,属性、方法都能往里塞。
当接触SpringBoot并上手后,Json又成了url访问后操作数据库返回的数。
到MongoDb后,哪哪都是Json,然后总结:Json是一中非常好用的数据存储格式。
添加依赖:implementation 'com.google.code.gson:gson:2.2.4'
一、根据实体创建Json字符串

json生成.png

1.准备一个实体类:Person:给出字段,get、set、toString方法省略
    /**
     * 姓名
      */        
    private String name;
    /**
     * 生日
     */
    private String birthday;
    /**
     * 年龄
     */
    private int age;
    /**
     * 男吗?
     */
    private boolean isMan;
    /**
     * 主要技能
     */
    private List<String> major;
2.使用JSONObject创建json字符串
 private static String createJsonByBeanUseGson() {
        Person toly = new Person();
        toly.setAge(24);
        toly.setName("toly");
        toly.setBirthday("1994-03-28");
        toly.setMan(false);

        List<String> major = new ArrayList<>();
        major.add("JavaScript");
        major.add("Android");
        major.add("SpringBoot");
        toly.setMajor(major);

        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.setPrettyPrinting();//美化输出的json格式化
        return gsonBuilder.create().toJson(toly);
    }
3.可见Json是键值的形式存储数据
{
   "age": 24,
   "birthday": "1994-03-28",
   "isMan": false,
   "major": [
     "JavaScript",
     "Android",
     "SpringBoot"
   ],
   "name": "toly"
 }
4.自定义键的名称
gsonBuilder.setFieldNamingStrategy(new FieldNamingStrategy() {
    public String translateName(Field field) {
        if (field.getName().equals("name")) {
            return "NAME";//更改字段名
        }
        return "z-"+field.getName();
    }
});

自定义键名.png


二、Gson解析Json

Json映射为Java实体
private static Person parseJsonUseGson(String Json) {
    Gson gson = new Gson();
    return gson.fromJson(Json, Person.class);
}

Json解析.png

关于日期
private Date birthday;//将日期改为Date类型
Json中使用字符串XXXX-XX-XX"形式,解析时可自动转换为Date格式

日期.png


三、Json与网络

Json最广泛的用途是在网络传输数据,具有体积小,JavaScript原生支持的主角光环 拿阿里的号码归属地查询的网站来说:https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=18715078974 返回内容就包括json,我们可以请求网络,获取数据,解析出来,在本地显示。

号码归属地.png

号码归属地查询项目:详见:

本文由张风捷特烈原创,转载请注明 更多安卓技术欢迎访问:https://www.jianshu.com/c/004f3fe34c94 张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com 你的喜欢与支持将是我最大的动力

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Kiba518

C#线程安全使用(五)

2,Task启动线程,传递CancellationToken。Task传递方式分为两种,一种通过Task的参数进行传递,另一种通过向线程内传递对象的方式传递Ca...

10820
来自专栏葡萄城控件技术团队

值得 .NET 开发者了解的15个特性

本文列举了 15 个值得了解的 C# 特性,旨在让 .NET 开发人员更好的使用 C# 语言进行开发工作。 1. ObsoleteAttribute Obsol...

37490
来自专栏程序员的SOD蜜

实体类的枚举属性--原来支持枚举类型这么简单,没有EF5.0也可以

    通常,我们都是在业务层和界面层使用枚举类型,这能够为我们编程带来便利,但在数据访问层,不使用枚举类型,因为很多数据库都不支持,比如我们现在用的SqlSe...

230100
来自专栏Java与Android技术栈

用kotlin打印出漂亮的android日志(三)——基于责任链模式打印任意对象

SAF-Kotlin-log 是一个Android的日志框架,这几天我抽空重新更新了一下代码。

13610
来自专栏跟着阿笨一起玩NET

C#反射读取和设置类的属性

http://www.cnblogs.com/william-lin/archive/2013/06/05/3118233.html

27310
来自专栏听雨堂

VB中Unicode的转换

    VB本身的字符串格式就是Unicode,用Winsock发送字符串的话,会默认把字符串转换为Ansi的格式进行发送。Ansi格式,对于英文符号等仍然使用...

26480
来自专栏我的博客

XML转成Json,数组转成Json,Json转成数组

1、数据交互经常用到XML或者Json,其中Json数据居多(优点不多说) 2、ZendFrameWork中如何将XML转换成Json以及数组和Json转换 直...

62590
来自专栏xingoo, 一个梦想做发明家的程序员

Apache Commons CLI命令行启动

今天又看了下Hangout的源码,一般来说一个开源项目有好几种启动方式——比如可以从命令行启动,也可以从web端启动。今天就看看如何设计命令行启动... ...

23570
来自专栏Android-薛之涛

Android-Gson小总

几乎每次项目中都要用到Gson来解析json数据,今天想做个总结。ok,现在我们先来了解一下JSONObject和JsonObject的区别(我个人总结了三点)...

16430
来自专栏大内老A

ASP.NET MVC是如何运行的(3): Controller的激活

ASP.NET MVC的URL路由系统通过注册的路由表对HTTP请求进行解析从而得到一个用于封装路由数据的RouteData对象,而这个过程是通过自定义的Url...

23280

扫码关注云+社区

领取腾讯云代金券