java实现json格式化怎么操作?格式化如何输出到控制台?

阳光 2020-12-18 22:27:45 java常见问答 3790

在操作java的时候,大家不知道java实现json格式化怎么操作?那么接下来,我们就来给大家讲解一下这方面的内容。

可以使用谷歌的Gson:

1、项目的pom.xml依赖

<dependency>
 <groupId>com.google.code.gson</groupId>
 <artifactId>gson</artifactId>
 <version>2.2.4</version>
</dependency>

2、Java示例代码

(1) 导入的包:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

(2) 测试代码:

JSON字符串与上述测试代码相同.

public static void main(String[] args)
{
    String jsonString = "{"
    _index ":"
    book_shop ","
    _type ":"
    it_book ","
    _id ":"
    1 ","
    _score ":1.0," +
        ""
    _source ":{"
    name ": "
    Java编程思想(第4版)
    ","
    author ": " [美] Bruce Eckel ","
    category ": "
    编程语言 "," +
        ""
    price ": 109.0,"
    publisher ": "
    机械工业出版社 ","
    date ": "
    2007 - 06 - 01 ","
    tags ": [ "
    Java ", "
    编程语言 " ]}}";
    String pretty = toPrettyFormat(jsonString)
    System.out.println(pretty);
}
/**
* 格式化输出JSON字符串
* @return 格式化后的JSON字符串
*/
private static String toPrettyFormat(String json)
{
    JsonParser jsonParser = new JsonParser();
    JsonObject jsonObject = jsonParser.parse(json)
        .getAsJsonObject();
    Gson gson = new GsonBuilder()
        .setPrettyPrinting()
        .create();
    return gson.toJson(jsonObject);
}

(3) 格式化输出后的结果:

说明: Gson使用2个空格作为换行后的格式转换.

{
    "_index": "book_shop"
    , "_type": "it_book"
    , "_id": "1"
    , "_score": 1.0
    , "_source":
    {
        "name": "Java编程思想(第4版)"
        , "author": "[美] Bruce Eckel"
        , "category": "编程语言"
        , "price": 109.0
        , "publisher": "机械工业出版社"
        , "date": "2007-06-01"
        , "tags": [
            
"Java",
            
"编程语言"
            
]
    }
}

格式化如何输出到控制台?

代码如下:

/**
* 输出json
*
* @param jsonObject json格式响应实体
*/
public static JSONObject output(JSONObject jsonObject)
{
    if (MapUtils.isEmpty(jsonObject))
    {
        output("json 对象是空的!");
        return jsonObject;
    }
    String start = SourceCode.getManyString(SPACE_1, 4);
    String jsonStr = jsonObject.toString(); // 先将json对象转化为string对象
    jsonStr = jsonStr.replaceAll("\\\\/", OR);
    int level = 0; // 用户标记层级
    StringBuffer jsonResultStr = new StringBuffer("> "); // 新建stringbuffer对象,用户接收转化好的string字符串
    for (int i = 0; i < jsonStr.length(); i++)
    { // 循环遍历每一个字符
        char piece = jsonStr.charAt(i); // 获取当前字符
        // 如果上一个字符是断行,则在本行开始按照level数值添加标记符,排除第一行
        if (i != 0 && '\n' == jsonResultStr.charAt(jsonResultStr.length() - 1))
        {
            for (int k = 0; k < level; k++)
            {
                jsonResultStr.append(start);
            }
        }
        switch (piece)
        {
        case ',':
            // 如果是“,”,则断行
            char last = jsonStr.charAt(i - 1);
            if ("\"0123456789le]}".contains(last + EMPTY))
            {
                jsonResultStr.append(piece + LINE);
            }
            else
            {
                jsonResultStr.append(piece);
            }
            break;
        case '{':
        case '[':
            // 如果字符是{或者[,则断行,level加1
            jsonResultStr.append(piece + LINE);
            level++;
            break;
        case '}':
        case ']':
            // 如果是}或者],则断行,level减1
            jsonResultStr.append(LINE);
            level--;
            for (int k = 0; k < level; k++)
            {
                jsonResultStr.append(start);
            }
            jsonResultStr.append(piece);
            break;
        default:
            jsonResultStr.append(piece);
            break;
        }
    }
    output(LINE + "↘ ↘ ↘ ↘ ↘ ↘ ↘ ↘ json ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙" + LINE + jsonResultStr.toString()
        .replaceAll(LINE, LINE + "> ") + LINE + "↘ ↘ ↘ ↘ ↘ ↘ ↘ ↘ json ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙");
    return jsonObject;
}

更新了输出显示效果:

java实现json格式化怎么操作?格式化如何输出到控制台?.png

备注:在json数据中存在“,”这种情况以及value非string(数字和null或者科学技术法时)可能会存在一些显示异常,以及value值本身是一个json数据的字符串时候也会把value当做json来处理。

好了,今天的分享到这里就结束了,大家要是不会json格式化处理的haul,参考以上方法就好了。最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。

推荐阅读:

json格式怎么打开?json格式打不开是什么原因?

json工具怎么打开?json查看工具分享

json格式化工具有哪些?在项目中使用什么工具来格式化JSON数据?