java - 列表to json 给出不完整的 json 列表
问题描述
我收到List<SkuDetails>
如下:
public void onSkuDetailsResponse(BillingResult billingResult,
List<SkuDetails> skuDetailsList) {
Gson gson = new Gson();
String json = gson.toJson(skuDetailsList);
Log.d(TAG, json);
然后我得到这个未完成的json:
[{"zza":"{\"skuDetailsToken\":\"s-r3R-r\",\"productId\":\"chill_lo_fi\",\"type\":\"inapp\",\"price\":\"R$ 5,49\",\"price_amount_micros\":5490000,\"price_currency_code\":\"BRL\",\"title\":\"Chill Lo-Fi (SDoubleKick - Footdrum - SS)\",\"description\":\"Chill Lo-Fi sound pack\"}","zzb":{"nameValuePairs":{"skuDetailsToken":"s-r3R-r","productId":"chill_lo_fi","type":"inapp","price":"R$ 5,49","price_amount_micros":5490000,"price_currency_code":"BRL","title":"Chill Lo-Fi (SDoubleKick - Footdrum - SS)","description":"Chill Lo-Fi sound pack"}}},{"zza":"{\"skuDetailsToken\":\"a-r\",\"productId\":\"percussion_and_fx\",\"type\":\"inapp\",\"price\":\"R$ 5,49\",\"price_amount_micros\":5490000,\"price_currency_code\":\"BRL\",\"title\":\"Percussion and Fx (SDoubleKick - Footdrum - SS)\",\"description\":\"Percussion and Fx sound pack\"}","zzb":{"nameValuePairs":{"skuDetailsToken":"s-dsf3
你可以看到这是一个列表,它应该打印正确,但我得到了,最后:
"zzb":{"nameValuePairs":{"skuDetailsToken":"s-dsf3
因此,当我将此 gson 重建为一个对象时,我得到一个异常
解决方案
Gson
不会截断您的 JSON 数据。logcat
是这里的罪魁祸首,默认情况下,它会截断任何它认为太长的日志消息。这可能发生在您的 IDE 内部以及在logcat
命令行上运行时。要摆脱日志上限,您可以通过创建如下包装器来拆分要记录的字符串:
package com.github.fundamentals.array;
public class Log {
public static void d(String tag, String jsonText) {
int maxLogSize = 2000;
for (int i = 0; i <= jsonText.length() / maxLogSize; i++) {
int start = i * maxLogSize;
int end = (i + 1) * maxLogSize;
end = end > jsonText.length() ? jsonText.length() : end;
android.util.Log.d(tag, jsonText.substring(start, end));
}
}
}
您还可以使用setPrettyPrinting
onGsonBuilder
以人类可读的格式打印 JSON 字符串(用于调试)
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String prettyJson = gson.toJson(json);
Log.d(TAG, prettyJson);
推荐阅读
- r - 为什么在世界映射时我会在 ggplot 中得到不同的图例?
- php - 用php cURL模拟表单POST,忽略标题?
- huggingface-transformers - 拥抱脸中的 tokenizer.encode 和 tokenizer.encode_plus 有什么区别
- r - 脱脂(数据)中的R组变量
- android - SHA-1 指纹证书在 Android Studio 中不显示调试模式
- parsing - 如何使用antlr4分析.aidl文件的语法?
- vert.x - Vertx 复合未来
- matlab - matlab - 从邻接中查找路径数组的循环太多
- mysql - mysql SELECT 和 WHERE 通常如何工作以及添加列时如何工作?
- python - 将 hive 查询转换为 pyspark