当前位置: 首页 > 知识库问答 >
问题:

如何在Android上漂亮地打印JSON原始数据[副本]

洪俊拔
2023-03-14

我在JSON中有一个API,我的JSON数据在我的android应用程序上是原始显示的,我希望它们以漂亮的打印格式显示,像这样

不是这样的

这是我的java代码:

package com.example.cbmedandroid;
import java.io.IOException;
import java.io.InputStream;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity implements OnClickListener {
@Override


public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


findViewById(R.id.my_button).setOnClickListener(this);
}


@Override


public void onClick(View arg0) {
Button b = (Button)findViewById(R.id.my_button);


b.setClickable(false);
new LongRunningGetIO().execute();
}

private class LongRunningGetIO extends AsyncTask <Void, Void, String> {
protected String getASCIIContentFromEntity(HttpEntity entity) throws    IllegalStateException, IOException {
InputStream in = entity.getContent();


StringBuffer out = new StringBuffer();
int n = 1;
while (n>0) {
byte[] b = new byte[4096];
n =  in.read(b);


if (n>0) out.append(new String(b, 0, n));
}


return out.toString();
}


@Override


protected String doInBackground(Void... params) {
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet("http://10.0.2.2:8000/api/horaire.json");
String text = null;
try {
HttpResponse response = httpClient.execute(httpGet, localContext);


HttpEntity entity = response.getEntity();


text = getASCIIContentFromEntity(entity);


} catch (Exception e) {
return e.getLocalizedMessage();
}


return text;
}


protected void onPostExecute(String results) {
if (results!=null) {
EditText et = (EditText)findViewById(R.id.my_edit);


et.setText(results);


}


Button b = (Button)findViewById(R.id.my_button);


b.setClickable(true);
}


}
}

共有1个答案

孟彦
2023-03-14

您需要使用Jackson或GSON这样的JSON库来漂亮地打印输出。关于杰克逊的例子,请看下面的答案。

 类似资料:
  • 我正在解组一个结构,我希望它以格式化的方式打印它。 我的代码(https://play.golang.org/p/D0KwGP6Cxa0)当前生成以下输出: 我希望它只有名称和值,并在每个项目后有一个新行。例如: 你知道我该怎么做吗?

  • 问题内容: 有人知道在Go中漂亮地打印JSON输出的简单方法吗? 库存的 http://golang.org/pkg/encoding/json/ 软件包似乎不包含此功能 (编辑:确实如此,请参见接受的答案),而且快速的Google并没有发现任何明显的问题。 我正在寻找的用途既可以打印出JSON 的结果,又可以从任何地方格式化一个充满JSON的字符串,因此出于调试目的而更易于阅读。 问题答案: 通

  • 问题内容: 这似乎是一个已解决的问题,但我无法找到解决方案。 基本上,我读取了一个JSON文件,更改了密钥,然后将新的JSON写回到同一文件。都可以,但是我松了JSON格式,所以,而不是: 我懂了 Node.js中是否可以将格式良好的JSON写入文件? 问题答案: 的第三个参数定义用于漂亮打印的空白插入。它可以是字符串或数字(空格数)。Node可以使用写入您的文件系统。例: 请参阅MDN上的JSO

  • 有人知道一种简单的方法可以在Go中漂亮地打印JSON输出吗? 股票 http://golang.org/pkg/encoding/json/软件包似乎不包含此功能 (编辑:是的,请参见公认的答案),快速的谷歌搜索不会发现任何明显的问题。 我正在寻找的用法都是漂亮的打印json的结果。封送,然后格式化来自任何地方的充满JSON的字符串,因此更容易出于调试目的进行读取。

  • 我在文本文件中有一个外观丑陋的JSON对象列表,每行一个。我想让他们打印良好,并将结果发送到一个文件。 我尝试使用json.tool的命令行python版本: 但是,这个json的解析似乎出了问题,因为Python的json.tool试图将其作为多个参数打开,因此抛出: IOError:[Errno 2]没有这样的文件或目录:{包含单引号、空格、双引号的行内容} 我如何强制将每一个分隔行的对象视为

  • 问题内容: 我有一个紧凑的JSON字符串,我想用Java很好地格式化它而不必先反序列化它- 例如就像jsonlint.org那样。有没有提供此功能的库? 类似的XML解决方案也不错。 问题答案: 我认为对于精美印刷的东西,了解其结构非常有帮助。 要获得结构,您必须对其进行解析。因此,我认为首先解析您拥有的JSON字符串,然后使用上面注释中提到的漂亮打印方法toString会比这容易得多。 当然,您