Android : 序列化 JSON简单应用

这篇具有很好参考价值的文章主要介绍了Android : 序列化 JSON简单应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. JSON介绍

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和写入,同时也易于机器解析和生成。它基于JavaScript的子集,采用完全独立于语言的文本格式来存储和表示数据。JSON是纯文本,并且完全是语言无关的。

JSON使用JavaScript语法来描述数据结构,但实际上JSON所用的数据结构都是诸如对象、数组、键/值对等的常见数据结构。

* 对象是由键/值对组成的集合,使用大括号 `{}` 表示。
* 数组是由一组值组成的集合,使用方括号 `[]` 表示。

例如:


```json
{
  "name": "张三",
  "age": 30,
  "isStudent": false,
  "subjects": ["数学", "英语", "历史"]
}
```
在这个例子中,我们有一个对象,包含四个键/值对。其中,"name" 的值为 "张三","age" 的值为 30,"isStudent" 的值为 false。最后一个键是 "subjects",其值是一个数组,包含三个字符串元素。

JSON的主要优点是它的简洁性和可读性。在JSON中,对象由花括号 `{}` 包围,而数组由方括号 `[]` 包围。此外,JSON支持多种数据类型,包括字符串、数字、布尔值、null、数组和对象。这使得JSON成为一种非常灵活的数据格式,可以用来表示各种复杂的数据结构。

2. 简单使用

1 .导框架 Gson

Maven 存储库:com.google.code.gson » gson (mvnrepository.com)文章来源地址https://www.toymoban.com/news/detail-759148.html

dependencies {

    // https://mvnrepository.com/artifact/com.google.code.gson/gson
    implementation("com.google.code.gson:gson:2.10.1")

}

2 .Student.java

package com.example.json;


public class Student {

    // 不要某个属性序列化 transient
//   private transient String name;

    //序列化时自定义名字 把 name 改成 user_name
//    @SerializedName("user_name")
//    private String name;

    private String name;
    private int age;
    private Score score;

    public Student(String name, int age, Score score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Score getScore() {
        return score;
    }

    public void setScore(Score score) {
        this.score = score;
    }

}

3. Score.java

package com.example.json;

public class Score {
    private float math;
    private float english;
    private float chinese;
    private String grade;

    public Score(float math, float english, float chinese) {
        this.math = math;
        this.english = english;
        this.chinese = chinese;
        if (math >= 90 && english >= 90 && chinese >= 90) {
            this.grade = "A";
        } else if (math >= 80 && english >= 80 && chinese >= 80) {
            this.grade = "B";
        } else {
            this.grade = "C";
        }
    }

    public float getMath() {
        return math;
    }

    public void setMath(float math) {
        this.math = math;
    }

    public float getEnglish() {
        return english;
    }

    public void setEnglish(float english) {
        this.english = english;
    }

    public float getChinese() {
        return chinese;
    }

    public void setChinese(float chinese) {
        this.chinese = chinese;
    }

    public String getGrade() {
        return grade;
    }

    public void setGrade(String grade) {
        this.grade = grade;
    }
}

4.MainActivity.java

package com.example.json;

import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        try {

            //JSONObject 生成Json 数据
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("name", "jack");
            jsonObject.put("age", 19);
            String json = jsonObject.toString(); //{"name":"jack","age":19}
            Log.e("JSON", "Json 数据:" + json.toString());

            //JSONObject 解析 Json 数据
            String data = "{ name:\"jack\", age: 19 }";
            JSONObject js = new JSONObject(data);
            String name = (String) js.get("name");
            Integer age = (Integer) js.get("age");
            Log.e("JSON", "解析 Json 数据---name:" + name + "---age:" + age);

            //Gson  对象 生成json数据
            Student student = new Student("jack", 25, new Score(60, 60, 60));
            String json2 = new Gson().toJson(student);
            //{"age":25,"name":"jack","score":{"chinese":60.0,"english":60.0,"grade":"C","math":60.0}}
            Log.e("JSON", "Json 数据:" + json2);

            //Gson  解析json数据 生成对象
            String data2 = "{\"age\":25,\"name\":\"jack\",\"score\":{\"chinese\":60.0,\"english\":60.0,\"grade\":\"C\",\"math\":60.0}}";
            Student student2 = new Gson().fromJson(data2, Student.class);
            Log.e("JSON", "Json student2 数据:" + student2);

            //Gson  数组对象 生成json数据
            Student student3 = new Student("jack", 25, new Score(90, 90, 90));
            Student student4 = new Student("Tom", 24, new Score(80, 80, 80));
            Student[] students = new Student[]{student3, student4};
            String json3 = new Gson().toJson(students);
            //[{"age":25,"name":"jack","score":{"chinese":90.0,"english":90.0,"grade":"A","math":90.0}},
            // {"age":24,"name":"Tom","score":{"chinese":80.0,"english":80.0,"grade":"B","math":80.0}}]
            Log.e("JSON", "Json 数据:" + json3);

            //  Gson  解析json数据 数组对象
            String data3 = "[{\"age\":25,\"name\":\"jack\",\"score\":{\"chinese\":90.0,\"english\":90.0,\"grade\":\"A\",\"math\":90.0}}," +
                    "{\"age\":24,\"name\":\"Tom\",\"score\":{\"chinese\":80.0,\"english\":80.0,\"grade\":\"B\",\"math\":80.0}}]";
            Student[] students2 = new Gson().fromJson(data3, Student[].class);
            Log.e("JSON", "Json 数据:" + students2);

            //Gson  List 对象 生成json数据
            List<Student> studentList = new ArrayList<>();
            studentList.add(new Student("jack", 25, new Score(90, 90, 90)));
            studentList.add(new Student("Tom", 24, new Score(80, 80, 80)));
            String json4 = new Gson().toJson(studentList);
            //[{"age":25,"name":"jack","score":{"chinese":90.0,"english":90.0,"grade":"A","math":90.0}},
            // {"age":24,"name":"Tom","score":{"chinese":80.0,"english":80.0,"grade":"B","math":80.0}}]
            Log.e("JSON", "Json 数据:" + json4);


            //Gson  解析json数据  生成 List 对象
            String data4 = "[{\"age\":25,\"name\":\"jack\",\"score\":{\"chinese\":90.0,\"english\":90.0,\"grade\":\"A\",\"math\":90.0}}," +
                    "{\"age\":24,\"name\":\"Tom\",\"score\":{\"chinese\":80.0,\"english\":80.0,\"grade\":\"B\",\"math\":80.0}}]";
            List<Student> students3 = new Gson().fromJson(data4, new TypeToken<List<Student>>() {
            }.getType());
            Log.e("JSON", "Json 数据:" + students3);

        } catch (JSONException e) {
            throw new RuntimeException(e);
        }
    }
}

到了这里,关于Android : 序列化 JSON简单应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android kotlin序列化之@Parcelize详解与使用

            在Android开发过程中,序列化使用概率一直很高。在页面之间传递的对象,需要要使用序列化,常见的序列化:Parcelable、Serialization。         由于Parcelable在传递压缩比高,效率高,一直被Google官方推荐。在Java语言中,Parcelable可以通过IDE自动生成,但是在kot

    2024年02月08日
    浏览(49)
  • 协议,序列化,反序列化,Json

    协议究竟是什么呢?首先得知道主机之间的网络通信交互的是什么数据,像平时使用聊天APP聊天可以清楚,用户看到的不仅仅是聊天的文字,还能够看到用户的头像昵称等其他属性。也就可以证明网络通信不仅仅是交互字符串那么简单。事实上网络通信还可能会通过一个结构

    2024年02月13日
    浏览(40)
  • 协议定制 + Json序列化反序列化

    1.1 结构化数据 协议是一种 “约定”,socket api的接口, 在读写数据时,都是按 “字符串” 的方式来发送接收的。如果我们要传输一些\\\"结构化的数据\\\" 怎么办呢? 结构化数据: 比如我们在QQ聊天时,并不是单纯地只发送了消息本身,是把自己的头像、昵称、发送时间、消息本身

    2024年02月09日
    浏览(46)
  • iOS处理json,序列化和反序列化

    Mantle 是一个开源的 Objective-C 框架,用于在 iOS 和 macOS 应用程序中实现模型层的序列化和反序列化。它提供了一种简单而强大的方式来将 JSON数据格式转换为自定义的数据模型对象,以及将数据模型对象转换为字典或 JSON 格式。 Mantle具有如下特点 自动映射 Mantle自动将 JSON 数据

    2024年02月11日
    浏览(63)
  • 快速上手Flask(三) 在 Flask应用中使用Flask-SQLAlchemy(flask SQLAlchemy模型对象如何json序列化输出)

    常见情况下对于只有一个 Flask 应用,所有您需要做的事情就是创建 Flask 应用,选择加载配置接着创建 SQLAlchemy 对象时候把 Flask 应用传递给它作为参数。 官网:https://www.sqlalchemy.org/ 参考本人 文章:python常用库之数据库orm框架之SQLAlchemy 官方文档: 中文: http://www.pythondoc.co

    2024年01月25日
    浏览(55)
  • rust学习-json的序列化和反序列化

    由于 serde 库默认使用 JSON 格式进行序列化和反序列化 因此程序将使用 JSON 格式对数据进行序列化和反序列化 JSON:广泛使用的 JavaScript 对象符号,用于许多 HTTP API Postcard:no_std 和嵌入式系统友好的紧凑二进制格式。 CBOR:用于小消息大小且无需版本协商的简洁二进制对象表示

    2024年02月12日
    浏览(40)
  • 【探索Linux】P.30(序列化和反序列化 | JSON序列化库 [ C++ ] )

    当谈到网络编程时,序列化和反序列化是非常重要的概念。在上一篇文章中,我们已经了解了在Linux环境下实现简单的TCP网络程序的基础知识。本文将继续探讨序列化和反序列化,这些概念对于在网络上传输数据以及跨网络通信至关重要。通过深入了解序列化和反序列化,我

    2024年04月08日
    浏览(89)
  • 【网络编程】协议定制+Json序列化与反序列化

    需要云服务器等云产品来学习Linux的同学可以移步/--腾讯云--/--阿里云--/--华为云--/官网,轻量型云服务器低至112元/年,新用户首次下单享超低折扣。   目录 一、序列化与反序列化的概念 二、自定义协议设计一个网络计算器 2.1TCP协议,如何保证接收方收到了完整的报文呢?

    2024年02月06日
    浏览(56)
  • 使用nlohmann json库进行序列化与反序列化

    nlohmann源码仓库:https://github.com/nlohmann/json 使用方式:将其nlohmann文件夹加入,包含其头文件json.hpp即可 demo

    2024年02月10日
    浏览(40)
  • 【网络】协议的定制与Json序列化和反序列化

    我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层 建立链接和断开链接 基于TCP协议,我们需要知道写代码时对应的接口大概在TCP通讯的过程中属于什么样的时间点角色,在TCP协议时详谈。三次握手,四次挥手 listen状态:准备好了,可以进

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包