Android 如何使用Gson将JSON读取为字符串?
我从Android 如何使用Gson将JSON读取为字符串?,android,string,gson,inputstream,logcat,Android,String,Gson,Inputstream,Logcat,我从WebService获取了一个Json,我想在我的LogCat中将它打印成字符串。我尝试了以下方法: Gson gson = new Gson(); HttpEntity getResponseEntity = httpResponse.getEntity(); InputStream is = getResponseEntity.getContent(); Reader reader = new InputStreamReader(is); Type snsType = new TypeT
WebService
获取了一个Json,我想在我的LogCat中将它打印成字符串。我尝试了以下方法:
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
不为空,因此这不是问题所在。您的流很可能已经被GSON读取过一次
如果你真的,真的想读两遍,你需要reset()
一个流,但是首先你必须mark()
你想重置的位置
但是,您只需在logcat中打印JSON,只需将toString()
方法添加到SNSRegister
类中,或者添加更好的用户改进
日志机制。如果这对您来说非常重要,Gson
可以使用字符串。
我不建议将流读取两次,尽管可以使用mark()
和reset()
执行此操作。由于除了读取器
之外,Gson
还将反序列化字符串
,因此您可以像这样将字符串
传递到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);
HttpEntity getResponseEntity=httpResponse.getEntity();
InputStream is=getResponseEntity.getContent();
字符串jsonString=convertStreamToString(is);
Log.i(“MyTAG”,jsonString);
Gson Gson=新的Gson();
类型snsType=newTypeToken(){}.getType();
snsRegister=gson.fromJson(jsonString,snsType);
不过,我不建议在生产环境中这样做,因为转换为字符串
需要很多额外的工作。但显然,您可以暂时使用它进行调试;你目前的做法是最好的生产方式
另一个选项是使用gson.toJson()
将SNSRegister
对象转换回JSON,但这会更慢。您从同一输入流中读取了两次。你不能那样做。您可以做的是先读取字符串,然后记录,从JSON调用,字符串为param。一些实现支持在输入流中标记位置,因此这可能是也可能不是work@JaviSanchezG谢谢你的勾选!你也因此得到了两个声望点!
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);