Java json gson

20 篇文章 6 订阅
1 篇文章 0 订阅

Java json gson

参考:

介绍 JSONhttp://www.json.org/json-zh.html
google/gsonhttps://github.com/google/gson
https://github.com/google/gsonhttps://github.com/zzz40500/GsonFormat/
Gson 2.8.0 APIhttp://www.javadoc.io/doc/com.google.code.gson/gson/2.8.0
zzz40500/GsonFormathttps://github.com/zzz40500/GsonFormat


jsonJavaScript Object Notation)是轻量级的数据交换格式,在数据交换领域中有着广泛的使用

gson 是由 Google 开源的基于 Java 语言的处理 json 格式文件的框架

下面介绍在 Java 语言环境下使用 gson 库来处理 json 格式文件


要实现的功能:

  1. android studio / intellij ideagson 库的导入;
  2. 解析 json 字符串为类对象,并反之;
  3. 解析 json 字符串为列表,并反之;
  4. 读取本地 json 文件并解析为类对象(或列表);
  5. 将类对象(或列表)写入本地 json 文件;
  6. 复杂 json 格式字符串的解析;
  7. 复杂 json 文件的解析;
  8. android sutdio / intellij idea 插件 GsonFormat 介绍;

android studio / intellij ideagson 库的导入

首先介绍 android studio 中如何导入 gson 依赖

打开 android studio ,新建一个工程:

  • 菜单栏 File -> Project Structure

  • 在打开的对话框中,左侧选择 app 选项,右侧选择 Dependencies 选项

  • 点击右上角的 按钮,选择 1. Library Dependency 选项

  • 输入 gson,点击搜索按钮进行搜索,在搜索到的选项中选择 com.google.code.gson:gson ,点击 OK 按钮,即可加入工程依赖中

接下来介绍 intellij idea 中如何导入 gson

下载一个 gson.jar 文件:

Index of /maven2/com/google/code/gson/gson/

打开 intellij idea,新建一个 java 工程

  • 同样,点击 File -> Project Structure,打开工程配置框

  • 右侧选择 Libraries 选项,左侧选择 按钮,在下拉框中选择 Java 选项

  • 指定下载好的 gson.jar 文件,点击 OK 按钮即可导入 gson

解析 json 字符串为类对象,并反之

首先,解析 json 字符串为类对象

最简单的 json 字符串

{
    "name": "zj",
    "age": 18,
    "address": "china"
}

定义相对应的类:

/**
 * Created by Lenovo on 2017/2/25.
 */
public class GsonTest {

    String name;
    int age;
    String address;

    public GsonTest(String name, int age, String address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }

    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 String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "GsonTest{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
}

实现代码下:

import com.google.gson.Gson;

public class Main {

    public static void main(String[] args) {
//        System.out.println("Hello World!");

        String str = "{'name':'zj', 'age':18, 'address':'china'}";

        Gson gson = new Gson();

        GsonTest test = gson.fromJson(str, GsonTest.class);

        System.out.println(test.getName());
        System.out.println(test.getAge());
        System.out.println(test.getAddress());
    }
}

结果:

关键函数:gson.fromJson,有两个参数,前者输入 json 格式字符串,后者输入相对应的类

接下来,将类对象解析为 json 格式字符串

实现代码如下:

import com.google.gson.Gson;

public class Main {

    public static void main(String[] args) {
//        System.out.println("Hello World!");

        GsonTest gsonTest = new GsonTest("hello", 222, "World");

        Gson gson = new Gson();

        String str = gson.toJson(gsonTest);

        System.out.println(str);
    }
}

结果:

关键函数:gson.tojson,输入类对象即可生成对应的 json 格式字符串


解析 json 字符串为列表,并反之

首先,解析 json 字符串为列表

* json 字符串如下*

[
    {
        "name": "one",
        "age": 12,
        "address": "china"
    },
    {
        "name": "two",
        "age": 22,
        "address": "english"
    },
    {
        "name": "three",
        "age": 99,
        "address": "france"
    }
]

实现代码:

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {
//        System.out.println("Hello World!");

        String str = "[{'name':'one', 'age':12, 'address':'china'}, " +
                "{'name':'two', 'age':22, 'address':'english'}, {'name':'three', 'age':99, 'address':'france'}]";

        Gson gson = new Gson();

        List<GsonTest> gsonTestList = gson.fromJson(str, new TypeToken<List<GsonTest>>(){}.getType());

        for (GsonTest gsonTest : gsonTestList) {
            System.out.println(gsonTest.toString());
        }
    }
}

结果:

关键函数: gson.fromJson(str, new TypeToken<List<GsonTest>>(){}.getType())

接下来,将类列表,解析为 json 格式字符串

实现代码:

import com.google.gson.Gson;

import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {
//        System.out.println("Hello World!");

        List<GsonTest> gsonTestList = new ArrayList<>();

        GsonTest gsonTest1 = new GsonTest("monday", 1, "china");
        gsonTestList.add(gsonTest1);

        GsonTest gsonTest2 = new GsonTest("thursday", 32, "china");
        gsonTestList.add(gsonTest2);

        GsonTest gsonTest3 = new GsonTest("friday", 13, "china");
        gsonTestList.add(gsonTest3);

        Gson gson = new Gson();

        String str = gson.toJson(gsonTestList);

        System.out.println(str);

    }
}

结果:


读取本地 json 文件并解析为类对象(或列表)

*这里增加了一个读取本地文件的过程,有两种不同的方式:
1. 即先将本地 json 文件读取为字符串,再使用 gson 库进行解析;
2. 使用 gson 库内置的 JsonReader 来读取 json 文件*

首先,使用第一种方式
  • 文件内容如下:

    {
        "name": "zj",
        "age": 18,
        "address": "china"
    }
    

实现代码:

    import com.google.gson.Gson;

    import java.io.*;

    public class Main {

        public static void main(String[] args) {
    //        System.out.println("Hello World!");

            File file = new File("C:\\JavaProjects\\gson1.json");
            StringBuilder stringBuilder = new StringBuilder();

            try {
                System.out.println("以字符为单位读取文件内容,一次读一个字节:");
                // 一次读一个字符
                Reader reader = new InputStreamReader(new FileInputStream(file));
                int tempchar;
                while ((tempchar = reader.read()) != -1) {
                    // 对于windows下,\r\n这两个字符在一起时,表示一个换行。
                    // 但如果这两个字符分开显示时,会换两次行。
                    // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
                    if (((char) tempchar) != '\r') {
                        System.out.print((char) tempchar);
                        stringBuilder.append((char) tempchar);
                    }
                }
                System.out.println();
                reader.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

            String str = stringBuilder.toString();
            System.out.println(str);

            Gson gson = new Gson();
            GsonTest gsonTest = gson.fromJson(str, GsonTest.class);

            System.out.println(gsonTest.toString());
        }
    }

参考:[Java]读取文件方法大全

结果:

  • 文件内容:

    [
        {
            "name": "one",
            "age": 12,
            "address": "china"
        },
        {
            "name": "two",
            "age": 22,
            "address": "english"
        },
        {
            "name": "three",
            "age": 99,
            "address": "france"
        }
    ]
    

实现代码:

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.io.*;
import java.util.List;

public class Main {

    public static void main(String[] args) {
//        System.out.println("Hello World!");

        File file = new File("C:\\JavaProjects\\gson1.json");
        StringBuilder stringBuilder = new StringBuilder();

        try {
            System.out.println("以字符为单位读取文件内容,一次读一个字节:");
            // 一次读一个字符
            Reader reader = new InputStreamReader(new FileInputStream(file));
            int tempchar;
            while ((tempchar = reader.read()) != -1) {
                // 对于windows下,\r\n这两个字符在一起时,表示一个换行。
                // 但如果这两个字符分开显示时,会换两次行。
                // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
                if (((char) tempchar) != '\r') {
                    System.out.print((char) tempchar);
                    stringBuilder.append((char) tempchar);
                }
            }
            System.out.println();
            reader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        String str = stringBuilder.toString();
//        System.out.println(str);

        Gson gson = new Gson();
        List<GsonTest> gsonTestList = gson.fromJson(str, new TypeToken<List<GsonTest>>(){}.getType());

        for (GsonTest gsonTest: gsonTestList) {
            System.out.println(gsonTest.toString());
        }
    }
}

结果:

接下来,使用 JsonReader 来读取 json 文件

gson 文档中对于 JsonReader 的讲解:

  • 对于简单文件解析如下

    import com.google.gson.Gson;
    import com.google.gson.stream.JsonReader;
    
    import java.io.*;
    
    public class Main {
    
        public static void main(String[] args) {
    //        System.out.println("Hello World!");
    
            Gson gson = new Gson();
    
            File file = new File("C:\\JavaProjects\\gson.json");
    
            GsonTest gsonTest = new GsonTest(null, -1, null);
    
            try {
                FileInputStream fis = new FileInputStream(file);
    
                JsonReader reader = new JsonReader(new InputStreamReader(fis, "UTF-8"));
    
                reader.beginObject();
                while (reader.hasNext()) {
                    String readName = reader.nextName();
    
                    if (readName.equals("name")) {
                        gsonTest.setName(reader.nextString());
                    } else if (readName.equals("age")) {
                        gsonTest.setAge(reader.nextInt());
                    } else if (readName.equals("address")) {
                        gsonTest.setAddress(reader.nextString());
                    } else {
                        reader.skipValue();
                    }
                }
                reader.endObject();
                reader.close();
                fis.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e2) {
                e2.printStackTrace();
            } catch (IOException e3) {
                e3.printStackTrace();
            }
    
            System.out.println(gsonTest.toString());
        }
    }
    

运行结果如下:

  • 对于列表的解析

    import com.google.gson.Gson;
    import com.google.gson.stream.JsonReader;
    
    import java.io.*;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Main {
    
        public static void main(String[] args) {
    //        System.out.println("Hello World!");
    
            Gson gson = new Gson();
    
            File file = new File("C:\\JavaProjects\\gson.json");
    
            List<GsonTest> gsonTestList = new ArrayList<>();
    
            try {
                FileInputStream fis = new FileInputStream(file);
    
                gsonTestList = new Main().readJsonStream(fis);
    
                fis.close();
            } catch (IOException e2) {
                e2.printStackTrace();
            }
    
            for (GsonTest gsonTest : gsonTestList) {
                System.out.println(gsonTest.toString());
            }
        }
    
        public List<GsonTest> readJsonStream(InputStream in) throws IOException {
            JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
            try {
                return readMessagesArray(reader);
            } finally {
                reader.close();
            }
        }
    
        public List<GsonTest> readMessagesArray(JsonReader reader) throws IOException {
            List<GsonTest> messages = new ArrayList<GsonTest>();
    
            reader.beginArray();
            while (reader.hasNext()) {
                messages.add(readMessage(reader));
            }
            reader.endArray();
            return messages;
        }
    
        public GsonTest readMessage(JsonReader reader) throws IOException {
            String name = null;
            int age = -1;
            String address = null;
    
            reader.beginObject();
            while (reader.hasNext()) {
                String readerName = reader.nextName();
                if (readerName.equals("id")) {
                    name = reader.nextString();
                } else if (readerName.equals("age")) {
                    age = reader.nextInt();
                } else if (readerName.equals("address")) {
                    address = reader.nextString();
                } else {
                    reader.skipValue();
                }
            }
            reader.endObject();
            return new GsonTest(name, age, address);
        }
    }
    

运行结果如下:


将类对象(或列表)写入本地 json 文件

*同样的,写过程也会有两种方式:
1. 将类对象(列表)转换为 json 格式字符串后写入 json 文件;
2. 使用 gson 库提供的 JsonWriter 进行写入*

先进行第一种写入
  • 写入简单的 json 字符串

实现代码如下:

import com.google.gson.Gson;

import java.io.*;

public class Main {

    public static void main(String[] args) {
//        System.out.println("Hello World!");

        GsonTest gsonTest = new GsonTest("one", 22, "zj");

        Gson gson = new Gson();

        String str = gson.toJson(gsonTest);

        File file = new File("C:\\JavaProjects\\gson.json");

        try {
            FileWriter fileWriter = new FileWriter(file, false);

            fileWriter.write(str);

            fileWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

打开 gson.json 文件:

{"name":"one","age":22,"address":"zj"}
  • 写入列表

实现代码:

import com.google.gson.Gson;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {
//        System.out.println("Hello World!");

        List<GsonTest> gsonTestList = new ArrayList<>();

        GsonTest gsonTest1 = new GsonTest("one", 22, "zj");
        gsonTestList.add(gsonTest1);
        GsonTest gsonTest2 = new GsonTest("add", 332, "zj");
        gsonTestList.add(gsonTest2);
        GsonTest gsonTest3 = new GsonTest("gadc", 7768, "zj");
        gsonTestList.add(gsonTest3);

        Gson gson = new Gson();

        String str = gson.toJson(gsonTestList);

        File file = new File("C:\\JavaProjects\\gson.json");

        try {
            FileWriter fileWriter = new FileWriter(file, false);

            fileWriter.write(str);

            fileWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

实现结果:

[{"name":"one","age":22,"address":"zj"},{"name":"add","age":332,"address":"zj"},{"name":"gadc","age":7768,"address":"zj"}]
接下来,使用 JsonWriter 进行写入
  • 简单 json

实现代码:

import com.google.gson.Gson;
import com.google.gson.stream.JsonWriter;

import java.io.*;

public class Main {

    public static void main(String[] args) {
//        System.out.println("Hello World!");

        GsonTest gsonTest = new GsonTest("one", 22, "zj");

        Gson gson = new Gson();

        File file = new File("C:\\JavaProjects\\gson.json");

        try {
            FileOutputStream fos = new FileOutputStream(file);

            JsonWriter writer = new JsonWriter(new OutputStreamWriter(fos, "UTF-8"));
            writer.setIndent("    ");   

            writer.beginObject();

            writer.name("name").value(gsonTest.getName());
            writer.name("age").value(gsonTest.getAge());
            writer.name("address").value(gsonTest.getAddress());

            writer.endObject();
            writer.close();
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果如下:

  • 简单 json 列表

实现代码:

import com.google.gson.Gson;
import com.google.gson.stream.JsonWriter;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {
//        System.out.println("Hello World!");

        List<GsonTest> gsonTestList = new ArrayList<>();

        GsonTest gsonTest1 = new GsonTest("one", 22, "zj");
        gsonTestList.add(gsonTest1);
        GsonTest gsonTest2 = new GsonTest("add", 332, "zj");
        gsonTestList.add(gsonTest2);
        GsonTest gsonTest3 = new GsonTest("gadc", 7768, "zj");
        gsonTestList.add(gsonTest3);

        Gson gson = new Gson();

        File file = new File("C:\\JavaProjects\\gson.json");

        try {
            FileOutputStream fos = new FileOutputStream(file);

            new Main().writeJsonStream(fos, gsonTestList);

            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void writeJsonStream(OutputStream out, List<GsonTest> messages) throws IOException {
        JsonWriter writer = new JsonWriter(new OutputStreamWriter(out, "UTF-8"));
        writer.setIndent("    ");
        writeMessagesArray(writer, messages);
        writer.close();
    }

    public void writeMessagesArray(JsonWriter writer, List<GsonTest> messages) throws IOException {
        writer.beginArray();
        for (GsonTest message : messages) {
            writeMessage(writer, message);
        }
        writer.endArray();
    }

    public void writeMessage(JsonWriter writer, GsonTest message) throws IOException {
        writer.beginObject();
        writer.name("name").value(message.getName());
        writer.name("age").value(message.age);
        writer.name("address").value(message.address);
        writer.endObject();
    }
}

实现结果:


复杂 json 格式字符串的解析

复杂的 json 格式,比如数组,嵌套类等

先介绍一个单个对象的 json 字符串:
{
    "id": 24324,
    "text": "zzz",
    "geo": [
        132,
        231
    ],
    "user": {
        "name": "zj",
        "count": 23.41
    }
}

包括了值为数组和值为嵌套类的形式

相对应的类对象为:

User.java:

/**
 * Created by Lenovo on 2017/2/25.
 */
public class User {

    String name;
    float count;

    public User(String name, float count) {
        this.name = name;
        this.count = count;
    }

    public String getName() {
        return name;
    }

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

    public float getCount() {
        return count;
    }

    public void setCount(float count) {
        this.count = count;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", count=" + count +
                '}';
    }
}

Message.java:

import java.util.Arrays;

/**
 * Created by Lenovo on 2017/2/25.
 */
public class Message {

    int id;
    String text;
    int[] geo;
    User user;

    public Message(int id, String text, int[] geo, User user) {
        this.id = id;
        this.text = text;
        this.geo = geo;
        this.user = user;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public int[] getGeo() {
        return geo;
    }

    public void setGeo(int[] geo) {
        this.geo = geo;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public String toString() {
        return "Message{" +
                "id=" + id +
                ", text='" + text + '\'' +
                ", geo=" + Arrays.toString(geo) +
                ", user=" + user +
                '}';
    }
}
  • json 字符串转换为类对象:

实现代码:

import com.google.gson.Gson;

public class Main {

    public static void main(String[] args) {
//        System.out.println("Hello World!");

        String str = "{'id':24324, 'text':'zzz', 'geo':[132, 231], 'user':{'name':'zj', 'count':13.13}}";

        Gson gson = new Gson();

        Message message = gson.fromJson(str, Message.class);

        System.out.println(str);
        System.out.println(message.toString());
    }
}

实现结果:

所以,依旧使用 gson.fromjson 函数即可

  • 将类对象转换为 json 字符串:

实现代码:

import com.google.gson.Gson;

public class Main {

    public static void main(String[] args) {
//        System.out.println("Hello World!");

        Gson gson = new Gson();

        Message message = new Message(99, "adf", new int[]{1, 2}, new User("zj", (float)23.23));

        String str = gson.toJson(message);

        System.out.println(str);
        System.out.println(message.toString());
    }
}

运行结果:

接下来介绍列表的使用情况

json 列表内容如下:

[
    {
        "id": 91201,
        "text": "How do I stream JSON in Java?",
        "geo": null,
        "user": {
            "name": "json_newb",
            "count": 41
        }
    },
    {
        "id": 91902,
        "text": "@json_newb just use JsonWriter!",
        "geo": [
            50,
            -104
        ],
        "user": {
            "name": "jesse",
            "count": 2
        }
    }
]
  • json 字符串转换为列表

实现代码:

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.util.List;

public class Main {

    public static void main(String[] args) {
//        System.out.println("Hello World!");

        String str = "[{'id':91201,'text': 'How do I stream JSON in Java?','geo': null,'user':{'name':'json_newb','count':41}}," +
                "{'id':9128902, 'text': '@json_newb just use JsonWriter!', 'geo': [ 50,-104],'user': {'name': 'jesse','count': 2}}]";

        Gson gson = new Gson();

        List<Message> messageList = gson.fromJson(str, new TypeToken<List<Message>>(){}.getType());

        for (Message message : messageList) {
            System.out.println(message.toString());
        }
    }
}

结果:


复杂 json 文件的解析

其实主要是 JsonReaderJsonWriter 对于数组,嵌套类的解析方式

gson 文档中有对应的代码,直接贴上来了

json 内容格式:

 [
   {
     "id": 912345678901,
     "text": "How do I read a JSON stream in Java?",
     "geo": null,
     "user": {
       "name": "json_newb",
       "followers_count": 41
      }
   },
   {
     "id": 912345678902,
     "text": "@json_newb just use JsonReader!",
     "geo": [50.454722, -104.606667],
     "user": {
       "name": "jesse",
       "followers_count": 2
     }
   }
 ]

JsonReader 使用:

   public List<Message> readJsonStream(InputStream in) throws IOException {
     JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
     try {
       return readMessagesArray(reader);
     } finally {
       reader.close();
     }
   }

   public List<Message> readMessagesArray(JsonReader reader) throws IOException {
     List<Message> messages = new ArrayList<Message>();

     reader.beginArray();
     while (reader.hasNext()) {
       messages.add(readMessage(reader));
     }
     reader.endArray();
     return messages;
   }

   public Message readMessage(JsonReader reader) throws IOException {
     long id = -1;
     String text = null;
     User user = null;
     List<Double> geo = null;

     reader.beginObject();
     while (reader.hasNext()) {
       String name = reader.nextName();
       if (name.equals("id")) {
         id = reader.nextLong();
       } else if (name.equals("text")) {
         text = reader.nextString();
       } else if (name.equals("geo") && reader.peek() != JsonToken.NULL) {
         geo = readDoublesArray(reader);
       } else if (name.equals("user")) {
         user = readUser(reader);
       } else {
         reader.skipValue();
       }
     }
     reader.endObject();
     return new Message(id, text, user, geo);
   }

   public List<Double> readDoublesArray(JsonReader reader) throws IOException {
     List<Double> doubles = new ArrayList<Double>();

     reader.beginArray();
     while (reader.hasNext()) {
       doubles.add(reader.nextDouble());
     }
     reader.endArray();
     return doubles;
   }

   public User readUser(JsonReader reader) throws IOException {
     String username = null;
     int followersCount = -1;

     reader.beginObject();
     while (reader.hasNext()) {
       String name = reader.nextName();
       if (name.equals("name")) {
         username = reader.nextString();
       } else if (name.equals("followers_count")) {
         followersCount = reader.nextInt();
       } else {
         reader.skipValue();
       }
     }
     reader.endObject();
     return new User(username, followersCount);
   }

对于列表而言,增加了 reader.beginArray, reader.hasNext 等函数

JsonWriter 使用:

   public void writeJsonStream(OutputStream out, List<Message> messages) throws IOException {
     JsonWriter writer = new JsonWriter(new OutputStreamWriter(out, "UTF-8"));
     writer.setIndent("    ");
     writeMessagesArray(writer, messages);
     writer.close();
   }

   public void writeMessagesArray(JsonWriter writer, List<Message> messages) throws IOException {
     writer.beginArray();
     for (Message message : messages) {
       writeMessage(writer, message);
     }
     writer.endArray();
   }

   public void writeMessage(JsonWriter writer, Message message) throws IOException {
     writer.beginObject();
     writer.name("id").value(message.getId());
     writer.name("text").value(message.getText());
     if (message.getGeo() != null) {
       writer.name("geo");
       writeDoublesArray(writer, message.getGeo());
     } else {
       writer.name("geo").nullValue();
     }
     writer.name("user");
     writeUser(writer, message.getUser());
     writer.endObject();
   }

   public void writeUser(JsonWriter writer, User user) throws IOException {
     writer.beginObject();
     writer.name("name").value(user.getName());
     writer.name("followers_count").value(user.getFollowersCount());
     writer.endObject();
   }

   public void writeDoublesArray(JsonWriter writer, List<Double> doubles) throws IOException {
     writer.beginArray();
     for (Double value : doubles) {
       writer.value(value);
     }
     writer.endArray();
   }

同样的,对于 JsonWriter,也增加了 writer.beginArray 等函数,同时要判断数组是否为空的情况


android sutdio / intellij idea 插件 GsonFormat 介绍

这是一个根据JSONObject格式的字符串,自动生成实体类参数的插件

android studiointellij idea 的安装都差不多,打开程序,新建工程

点击 File -> Settings , 左侧选择 Plugins,在右侧输入 GsonFormat:

如果不存在,则点击右侧下方的 Browse Repositories,进行安装即可

使用方法可查看 github 官网,中文简介在下面:

https://github.com/zzz40500/GsonFormat/blob/master/README_CN.md

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值