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

Java 如何在TextView中设置格式化JSON响应字符串?,java,android,json,textview,Java,Android,Json,Textview,如何显示格式类似于JSON.parser.online.fr的JSON响应字符串 例如:如何在文本视图中显示以下代码? { "age":100, "name":"mkyong.com", "messages":["msg 1","msg 2","msg 3"] } 附言:最好是彩色格式 简言之 1.如何格式化和显示JSON字符串? 2.如何格式化和显示Java代码 您想解析它还是只显示原始JSON响应?如果前者: 如果要格式化,可以手动执行: 例如: {“J”:5,“

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

例如:如何在文本视图中显示以下代码?

{
    "age":100,
    "name":"mkyong.com",
    "messages":["msg 1","msg 2","msg 3"]
}
附言:最好是彩色格式

简言之

1.如何格式化和显示JSON字符串?

2.如何格式化和显示Java代码

您想解析它还是只显示原始JSON响应?如果前者:

如果要格式化,可以手动执行:

例如:

{“J”:5,“0”:“N”}


首先删除“{,}”,将此数组“J”:5,“0”:“N”'按','拆分,然后对于着色,只需检查值是否有引号,并进行相应选择。只是一个简单的字符串操作

然后输出:

  • {
  • 带有着色的数组项的foreach循环
  • }

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

公共静态字符串格式字符串(字符串文本){
StringBuilder json=新的StringBuilder();
字符串缩进字符串=”;
对于(int i=0;i
您可以使用这是一个库,将对象序列化为XML并再次序列化。
但它也可以用于JSON,请看这里
在这里可以找到更多的库

编辑 要以HTML显示,可以使用Javascript:


@suhas_sm建议的方法很好,但是如果有一个键或一个值包含一个特殊字符,“{”,则无法正确缩进

我的解决方案(基于suhas_sm的方法):

公共静态字符串格式字符串(字符串文本){
StringBuilder json=新的StringBuilder();
字符串缩进字符串=”;
布尔inQuotes=false;
布尔isEscaped=false;
对于(int i=0;i
我知道这已经太晚了,但我最近编写了一个解决方案。这将帮助您格式化已经部分格式化的JSON字符串。我之所以在这里发布这篇文章,是因为当我有一个部分格式化的输入JSON时,上述解决方案不起作用


给您。

您可以使用ObjectMapper

第一件事是将字符串转换为对象,然后执行如下操作

String prettyJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(object);
结果

{
    "age":100,
    "name":"mkyong.com",
    "messages":["msg 1","msg 2","msg 3"]
}

更简单的方法是,有一个
toString
方法,它为
JSONObject
使用缩进空间参数

可以这样使用:

JSONObject jsonObject = new JSONObject(jsonString);
textView.setText(jsonObject.toString(4));// 4 is number of spaces for indent
同样适用于
JSONArray

参考:


您可以使用此方法美化JSON(只是@Rahul Tiwari答案的补充)

private String prettifyJson(String jsonString){
JSONObject JSONObject=null;
试一试{
jsonObject=新的jsonObject(jsonString);
}捕获(忽略JSONException){
}
试一试{
if(jsonObject!=null){
返回jsonObject.toString(4);
}
}捕获(忽略JSONException){
}
返回“空”;
}

我不想解析它。我只想在格式化后显示原始JSON响应——就像在JSON.online.parse.fr中格式化一样。所以唯一的解决方案是使用正则表达式并手动执行?一些JSON响应足够长,可以容纳所有JSON类型。在编程中,从来没有只有一个解决方案。但我想说的是ea这是我想到的最简单的方式。它不需要超过20行代码(不包括JSON请求);如果您不确定所有JSON类型,只需添加一个处理所有其他异常的“默认”大小写。仅处理例如字符串、数组和着色数字就足够了。Mmmh,“/t'?:P更多信息?JSON本质上是一个字符串,因为
textview
display strings我看不出您有什么问题。是什么您实际需要的输出。您能将其添加到问题中吗?颜色格式化?我得到的回答是一个单行字符串(没有新行,没有缩进)-非常长。如果我直接显示它
String prettyJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(object);
{
    "age":100,
    "name":"mkyong.com",
    "messages":["msg 1","msg 2","msg 3"]
}
JSONObject jsonObject = new JSONObject(jsonString);
textView.setText(jsonObject.toString(4));// 4 is number of spaces for indent