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