当前位置:   article > 正文

fastJson详解_fastjson indent

fastjson indent

 关系图:



  1. 解析JSON文本为带格式JSON文本
  2. public final class FormatJsonUtil {
  3. /**
  4. * 打印输入到控制台
  5. *
  6. * @param jsonStr
  7. */
  8. public static void printJson(String jsonStr) {
  9. System.out.println(formatJson(jsonStr));
  10. }
  11. /**
  12. * 格式化
  13. *
  14. * @param jsonStr
  15. */
  16. public static String formatJson(String jsonStr) {
  17. if (null == jsonStr || "".equals(jsonStr))
  18. return "";
  19. StringBuilder sb = new StringBuilder();
  20. char last = '\0';
  21. char current = '\0';
  22. int indent = 0;
  23. boolean isInQuotationMarks = false;
  24. for (int i = 0; i < jsonStr.length(); i++) {
  25. last = current;
  26. current = jsonStr.charAt(i);
  27. switch (current) {
  28. case '"':
  29. if (last != '\\'){
  30. isInQuotationMarks = !isInQuotationMarks; // "{\"planId\": \"\"}"
  31. } // T F T F
  32. sb.append(current);
  33. break;
  34. case '{':
  35. case '[':
  36. sb.append(current);
  37. if (!isInQuotationMarks) {
  38. sb.append('\n');
  39. indent++;
  40. addIndentBlank(sb, indent);
  41. }
  42. break;
  43. case '}':
  44. case ']':
  45. if (!isInQuotationMarks) {
  46. sb.append('\n');
  47. indent--;
  48. addIndentBlank(sb, indent);
  49. }
  50. sb.append(current);
  51. break;
  52. case ',':
  53. sb.append(current);
  54. if (last != '\\' && !isInQuotationMarks) {
  55. sb.append('\n');
  56. addIndentBlank(sb, indent);
  57. }
  58. break;
  59. default:
  60. sb.append(current);
  61. }
  62. }
  63. return sb.toString();
  64. }
  65. /**
  66. * 添加space
  67. */
  68. private static void addIndentBlank(StringBuilder sb, int indent) {
  69. for (int i = 0; i < indent; i++) {
  70. sb.append('\t');
  71. }
  72. }
  73. }

Fastjson介绍
Fastjson是一个Java语言编写的JSON处理器。
1、遵循 http://json.org 标准,为其官方网站收录的参考实现之一。
2、功能强大,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。
3、无依赖,不需要例外额外的jar,能够直接跑在JDK上。
4、开源,使用Apache License 2.0协议开源。 http://code.alibabatech.com/wiki/display/FastJSON/Home
如果获得Fastjson?
如果你使用了Maven,maven repository配置如下:
<repository>
    <id>opensesame</id>
    <name>Alibaba OpenSource Repsoitory</name>
    <snapshots>
        <enabled>false</enabled>
    </snapshots>
</repository>
pom.xml文件中加入依赖依赖:
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.0.4</version>
</dependency>
如果没有使用maven,可以直接下载:

使用介绍:
Fastjson的最主要的使用入口是com.alibaba.fastjson.JSON

import com.alibaba.fastjson.JSON;

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
public static final <T> List<T> parseArray(String text, Class<T> clazz);//把JSON文本parse成JavaBean集合
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
public static final Object toJSON(Object javaObject); // 将JavaBean转换为JSONObject或者JSONArray。

代码示例:
代码示例用到类User和Group:
public class User {
    private Long id;
    private String name;
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
}
public class Group {
    private Long id;
    private String name;
    private List<User> users = new ArrayList<User>();
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public List<User> getUsers() { return users; }
    public void setUsers(List<User> users) { this.users = users; }
}

  1. Encode代码示例:
  2. import com.alibaba.fastjson.JSON;
  3. Group group = new Group();
  4. group.setId(0L);
  5. group.setName("admin");
  6. User guestUser = new User();
  7. guestUser.setId(2L);
  8. guestUser.setName("guest");
  9. User rootUser = new User();
  10. rootUser.setId(3L);
  11. rootUser.setName("root");
  12. group.getUsers().add(guestUser);
  13. group.getUsers().add(rootUser);
  14. String jsonString = JSON.toJSONString(group);
  15. System.out.println(jsonString);
  16. Decode 代码示例:
  17. Group group2 = JSON.parseObject(jsonString, Group.class);



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/911957
推荐阅读
相关标签
  

闽ICP备14008679号