[关闭]
@File 2019-08-08T07:49:55.000000Z 字数 4373 阅读 201

ljson使用说明

test java


jar包下载


java文件下载

github下载
百度云下载


简述

ljson 是一个简单的 json 数据处理类,基于ListMap作为转换对象封装而成
内置:Json父类、JsonMap子类、JsonList子类、LJson对象、ILJson接口
注解(供 lmysql 使用):@Table表名、@DbField字段名

Json父类

public abstract class Json

JsonMap子类

public class JsonMap extends Json
  1. // map对象转换为json字符串
  2. public static String encode(Map map)
  3. // ILJson 实例对象转json字符串
  4. public static String encode(ILJson obj)
  5. // json字符串转为Map对象
  6. public static LJson decode(String json)

JsonList子类

public class JsonList extends Json
  1. // list对象转换为json字符串
  2. public static String encode(List list)
  3. // json字符串转为List对象
  4. public static LJson decode(String json)

LJson对象

public class LJson<T>

基本用法
1. public LJson(T obj) 通过 List/Map 转换成 LJson 对象
2. public T getObj() 取结果对象的源对象 List/Map
3. public Object get(Object... keys) 通过传入多个参数,依次深入(维度)取值

  1. // 暂时不支持自定义对象取值(实现 ILJson 的对象)
  2. // 第一维 list
  3. List list = new ArrayList();
  4. // 第二维 map
  5. Map mao = new HashMao();
  6. map.put("a","array"); // 二维的值
  7. // 复制个一维 list
  8. list.add(map);
  9. // 转换成 LJson
  10. LJson<List> ljson = new LJson<>(list);
  11. // 用 get 方法取值
  12. System.out.println(ljson.get(0,"a")); // array

ILJson接口

public interface ILJson

自定义规范

1. 定义符合 LJson 操作的类
  1. public class User implements ILJson{ // 必须实现 ILJson
  2. private String name;
  3. private int age;
  4. private char sex;
  5. public User(name,age,sex){
  6. this.name = name;
  7. this.age = age;
  8. this.sex = sex;
  9. }
  10. //必须有 get和set 方法
  11. public String getName(){return name;}
  12. public void setName(String name){this.name = name;}
  13. public int getAge(){return age;}
  14. public void setAge(int age){this.age = age;}
  15. public char getSex(){return sex;}
  16. public void setSex(char sex){this.sex = sex;}
  17. }
2. 定义符合 LMysql 操作的映射类
  1. @Table("user") // 表名注解
  2. public class User implements ILJson{ // 必须实现 ILJson
  3. // 字段名注解,用于LMysql识别属性所对应的字段名
  4. // 主键注解的属性会被 新增、修改 忽略
  5. @DbField(value="uid",cst=Constraint.PRIMARY) // 主键字段
  6. private int id;
  7. @DbField("user_name") // 字段名
  8. private String name;
  9. @DbField("age") // 字段名
  10. private int age;
  11. @DbField("sex") // 字段名
  12. private char sex;
  13. public User(name,age,sex){
  14. this.name = name;
  15. this.age = age;
  16. this.sex = sex;
  17. }
  18. //必须有 get和set 方法
  19. public int getId(){return id}
  20. public void setId(int id){this.id = id;}
  21. public String getName(){return name;}
  22. public void setName(String name){this.name = name;}
  23. public int getAge(){return age;}
  24. public void setAge(int age){this.age = age;}
  25. public char getSex(){return sex;}
  26. public void setSex(char sex){this.sex = sex;}
  27. }

注意:自定义对象除了需要实现ILJson之外,还需要是一个规范的带有getxxx()方法的类,否则无法读取

ILJson接口拓展
1. default Map getParam() 获取实现接口的对象的所有属性和值
2. default boolean set(String,String) 修改指定属性的值

  1. // 一个规范实现了ILJson接口的类
  2. User user = new User("李大爷",25,"男");
  3. // 通过 set() 修改属性值
  4. user.set("age","18");
  5. // 通过 getParam() 取所有的属性
  6. Map params = user.getParam();
  7. System.out.println(params);
  8. // {name=李大爷,age=18,sex=男}

demo调用实例

创建一个自定义对象

  1. import ljson.ILJson;
  2. public class testMap implements ILJson {
  3. private String a;
  4. private int b;
  5. private String c;
  6. public testMap(String a, int b, String c) {
  7. this.a = a;
  8. this.b = b;
  9. this.c = c;
  10. }
  11. public String getA() {
  12. return a;
  13. }
  14. public int getB() {
  15. return b;
  16. }
  17. public String getC() {
  18. return c;
  19. }
  20. }

List 转 json

  1. List list = new ArrayList(); // 创建一个List对象
  2. list.add(new testMap("1",2,"3")); // 添加自定义对象
  3. list.add(666); // 添加值
  4. list.add("哈哈哈"); // 添加值
  5. // 调用 JsonList.encode 转换
  6. String json = JsonList.encode(list);
  7. System.out.println(json);
  8. // [{"a":"1","b":2,"c":"3"},666,"\u54c8\u54c8\u54c8"]

Map 转 json

  1. Map map = new HashMap(); // 创建一个Map对象
  2. map.put("self",new testMap("1",2,"3")); // 添加自定义对象
  3. map.put("name","李大爷"); //添加值
  4. map.put("age",18); // 添加值
  5. // 调用 JsonMap.encode 转换
  6. String json = JsonMap.encode(map);
  7. // 也可以对象转json
  8. String json2 = JsonMap.encode(new testMap("2",3,"4"));
  9. System.out.println(json);
  10. // {"name":"\u674e\u5927\u7237","self":{"a":"1","b":2,"c":"3"},"age":18}
  11. System.out.println(json2);
  12. //{"a":"1","b":2,"c":"3"}

json 转 List

  1. // json字符串
  2. String json = "[{\"a\":\"1\",\"b\":2,\"c\":\"3\"},666,\"\u54c8\u54c8\u54c8\"]";
  3. // 调用 JsonList.decode 转换
  4. LJson ljson = JsonList.decode(json);
  5. // 通过 LJson.get 取值
  6. int num = (int)ljson.get(1); // 下标为1
  7. String str = (String)ljson.get(0,"a"); // 下标为0里key为a
  8. System.out.println(num); // 666
  9. System.out.println(str); // 1
  10. System.out.println(ljson);
  11. // [{a=1, b=2, c=3}, 666, 哈哈哈]

json 转 Map

  1. // json 字符串
  2. String json = "{\"name\":\"\u674e\u5927\u7237\",\"self\":{\"a\":\"1\",\"b\":2,\"c\":\"3\"},\"age\":18}";
  3. // 调用 JsonMap.decode 转换
  4. LJson ljson = JsonMap.decode(json);
  5. // 通过 LJson.get 取值
  6. int num = (int)ljson.get("age"); // key为age
  7. String str = (String)ljson.get("self","c"); // key为self里key为c
  8. System.out.println(num); // 18
  9. System.out.println(str); // 3
  10. System.out.println(ljson);
  11. // {name=李大爷, self={a=1, b=2, c=3}, age=18}
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注