读取输入消息时JSON错误I / O错误;嵌套的异常为java.io.CharConversionException:无效的UTF-32字符

时间:2019-02-27 20:05:57

标签: java android json spring

我开发了一个Android应用程序,该应用程序与使用Spring开发的后端进行通信。有时,当我使用Retrofit发送POST请求时,后端会引发以下错误:错误RestExceptionHandler:29-org.springframework.http.converter.HttpMessageNotReadableException:读取输入消息时发生I / O错误;嵌套异常是java.io.CharConversionException:在char#4的字节#19处无效的UTF-32字符0x616d6765(在0x0010ffff以上)。

搜索此消息后,我记录了Retrofit onResponse回调中发送的JSON,并注意到它不完整。就像这样:

{
"key": "value"
"arrayKey": [
    {
        "objectKey": "objectValue"
    }
]
"key2": "value2",
"key3": "

它只是停止JSON的创建。

我不知道是否由于登录时转换为JSON函数而发生这种情况,或者对象创建是否有错误。更奇怪的是,当用户多次发送邮件时,一瞬间一切都发生了。

这是将对象转换为JSON的函数,我用它在Retrofit中记录发送的对象:

public static <T> String ToJson(T obj) {
    try{
        GsonBuilder builder = new GsonBuilder();
        Gson gson = builder.create();
        return gson.toJson(obj);
    }
    catch(Exception ex) {
        Log.v("convertion_error", ex.toString());
        return null;
    }
}

我认为问题不在于日志功能,因为几乎每次日志都可以使用完整的JSON

这是我的对象创建功能:

private CreatedObject objectCreation(Parameter parameter) {
    CreatedObject createdObject = new CreatedObject();
    createdObject.setInformation1(parameter.getInformation1());
    createdObject.setInformation2(parameter.getInformation2());
    createdObject.setInformation3(parameter.getInformation3());
    createdObject.setDate(DateFormatHelper.getGMTDate());
    List<ObjectArray> objects = new ArrayList<>();
    for (DataObject p : parameter.getData()) {
        ObjectArray ob = new ObjectArray();
        ob.setInformation5(p.getInformation5());
        ob.setInformation6(p.getInformation6());
        ob.setInformation7(p.getInformation7());

        objects.add(ob);
    }
    createdObject.setArrayInformations(objects);
    return createdObject;
}

有人已经通过改造获得了不完整的JSON错误?

0 个答案:

没有答案