gpt4 book ai didi

android - 如何使用 Gson 将 JSON 读取为字符串?

转载 作者:行者123 更新时间:2023-11-29 17:32:31 26 4
gpt4 key购买 nike

我从 WebService 获取一个 Json,我想在我的 LogCat 中将它打印为 String。我尝试了以下方法:

Gson gson = new Gson();
HttpEntity getResponseEntity = httpResponse.getEntity();
InputStream is = getResponseEntity.getContent();
Reader reader = new InputStreamReader(is);
Type snsType = new TypeToken<SNSRegister>(){}.getType();
snsRegister = gson.fromJson(reader, snsType);
String jsonString = convertStreamToString(is);

snsRegister 是我的可序列化类的一个实例,我试图通过将 InputStream 对象转换为 String 在我的 logcat 中打印 JSON > 使用 convertStreamtoString 方法:

static String convertStreamToString(java.io.InputStream is) {
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}

但我的字符串总是空的,我不知道为什么。 snsRegister 不为空,所以这不是问题所在。

最佳答案

如果这对您来说真的很重要,Gson 可以接受一个String

我不建议阅读 Stream 两次,尽管您可以使用 mark()reset() 来完成。由于 Gson 除了 Reader 之外还会反序列化一个 String,所以你可以像这样将 String 传递给 Gson :

HttpEntity getResponseEntity = httpResponse.getEntity();
InputStream is = getResponseEntity.getContent();
String jsonString = convertStreamToString(is);
Log.i("MyTAG", jsonString);

Gson gson = new Gson();
Type snsType = new TypeToken<SNSRegister>() {}.getType();
snsRegister = gson.fromJson(jsonString, snsType);

不过,我不建议在生产环境中这样做,因为转换为 String 需要大量额外工作。但是显然,您可以暂时使用它进行调试;您目前使用的方式是生产的最佳方式。

另一种选择是使用 gson.toJson()SNSRegister 对象转换回 JSON,但这会更慢。

关于android - 如何使用 Gson 将 JSON 读取为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32212578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com