仅在启用 proguard 时 JSONArray 不是字符串异常
Posted
技术标签:
【中文标题】仅在启用 proguard 时 JSONArray 不是字符串异常【英文标题】:JSONArray not a string exception only when proguard is enabled 【发布时间】:2017-01-28 08:24:25 【问题描述】:JSONArray.getString(1);
其中 ["name",null] 是 json 数组,只有在启用 proguard 时才会抛出 JSONArray[1] not a string
异常。
我是否在我的 proguard 规则中遗漏了什么?
【问题讨论】:
你在使用 GSON 吗? 请发布您当前的 proguard 规则 看看这可能会有所帮助:***.com/q/58720274/6071729 请发布您的代码。 字符串 resCode = signObject.getString("status"); .where 状态键是一个 int。 JSONArray 或 JSONObject 也是如此。 【参考方案1】:这些方法你试过了吗:
/**
* Returns the value at @code index if it exists, coercing it if
* necessary. Returns the empty string if no such value exists.
*/
public String optString(int index)
或
/**
* Returns the value at @code index if it exists, coercing it if
* necessary. Returns @code fallback if no such value exists.
*/
public String optString(int index, String fallback)
似乎不会为字符串返回null
【讨论】:
是的,我有,它们确实有效。但是现有的项目已经全部getString了。切换到optString是最后的选择。 通过阅读public String getString(int index)
的代码,我可以看到如果您的值为空且当前您的输入为空值,它会引发异常。如果您在使用getString
的所有地方都没有发现异常,那么错误将不断出现。改变方法是一个艰难但安全的方法以上是关于仅在启用 proguard 时 JSONArray 不是字符串异常的主要内容,如果未能解决你的问题,请参考以下文章
androidx.paging.PagedStorage.init 在启用 proguard 时给出错误