如何在TextView中设置格式化的JSON响应字符串?

suh*_*_sm 10 java android json textview

如何显示格式类似的JSON响应字符串json.parser.online.fr

例如:如何在textview中显示以下代码?

{
    "age":100,
    "name":"mkyong.com",
    "messages":["msg 1","msg 2","msg 3"]
}
Run Code Online (Sandbox Code Playgroud)

PS:最好是彩色格式.

简而言之 ..

1.如何格式化和显示JSON字符串?
2.如何格式化和显示Java代码?

suh*_*_sm 23

我编写了以下实用程序方法来格式化和缩进(还没有颜色):

public static String formatString(String text){

    StringBuilder json = new StringBuilder();
    String indentString = "";

    for (int i = 0; i < text.length(); i++) {
        char letter = text.charAt(i);
        switch (letter) {
            case '{':
            case '[':
                json.append("\n" + indentString + letter + "\n");
                indentString = indentString + "\t";
                json.append(indentString);
                break;
            case '}':
            case ']':
                indentString = indentString.replaceFirst("\t", "");
                json.append("\n" + indentString + letter);
                break;
            case ',':
                json.append(letter + "\n" + indentString);
                break;

            default:
                json.append(letter);
                break;
        }
    }

    return json.toString();
}
Run Code Online (Sandbox Code Playgroud)


Rah*_*ari 8

更简单的方法,有一个toString缩进空间参数的方法JSONObject

可以这样使用:

JSONObject jsonObject = new JSONObject(jsonString);
textView.setText(jsonObject.toString(4));// 4 is number of spaces for indent
Run Code Online (Sandbox Code Playgroud)

同样适用于 JSONArray

参考 :

https://developer.android.com/reference/org/json/JSONObject#toString(int)

https://alvinalexander.com/android/android-json-print-json-string-human-readable-format-debugging