Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG]byte[]无法正确反序列化 com.alibaba.fastjson2.JSONException: offset 106, character }, #1255

Closed
lorna1 opened this issue Mar 21, 2023 · 4 comments
Labels
bug Something isn't working fixed
Milestone

Comments

@lorna1
Copy link

lorna1 commented Mar 21, 2023

问题描述

Caused by: com.alibaba.fastjson2.JSONException: offset 106, character }, line 6, column 3, fastjson-version 2.0.26
{
"success" : true,
"code" : "",
"message" : "",
"data" : "H4sIAAAAAAAAAIvOK83JiQUAs/s3MAYAAAA="
}
at com.alibaba.fastjson2.reader.ObjectReaderImplGenericArray.readObject(ObjectReaderImplGenericArray.java:94) ~[fastjson2-2.0.26.jar:?]
at com.alibaba.fastjson2.reader.ORG_1_4_DynamicDataResponse.readObject(Unknown Source) ~[?:?]
at com.alibaba.fastjson.JSON.parseObject(JSON.java:508) ~[fastjson-2.0.26.jar:?]

环境信息

请填写以下信息:

  • OS信息: [e.g.:MAC OS 13.2 ]
  • JDK信息: [e.g.:jdk 1.8.0_212]
  • 版本信息:[e.g.:Fastjson2 2.0.26]

重现步骤

类:
DataResponse extends ResponseDTO<byte[]>
ResponseDTO implements Serializable {
private static final long serialVersionUID = -3007330743907543218L;
private boolean success;
private String code;
private String message;
private T data;
}

JSON.parseObject(result, DataResponse.class);

期待的正确结果

正确序列化

相关日志输出

Caused by: com.alibaba.fastjson2.JSONException: offset 106, character }, line 6, column 3, fastjson-version 2.0.26
{
"success" : true,
"code" : "",
"message" : "",
"data" : "H4sIAAAAAAAAAIvOK83JiQUAs/s3MAYAAAA="
}
at com.alibaba.fastjson2.reader.ObjectReaderImplGenericArray.readObject(ObjectReaderImplGenericArray.java:94) ~[fastjson2-2.0.26.jar:?]
at com.alibaba.fastjson2.reader.ORG_1_4_DynamicDataResponse.readObject(Unknown Source) ~[?:?]
at com.alibaba.fastjson.JSON.parseObject(JSON.java:508) ~[fastjson-2.0.26.jar:?]

附加信息

@lorna1 lorna1 added the bug Something isn't working label Mar 21, 2023
@wenshao
Copy link
Member

wenshao commented Mar 21, 2023

要加上Base64StringAsByteArray,比如:

JSON.parseObject("..", Bean.class, JSONReader.Feature.Base64StringAsByteArray);

@wenshao wenshao added question Further information is requested and removed bug Something isn't working labels Mar 21, 2023
@Alex-hu
Copy link

Alex-hu commented Mar 22, 2023

如果基类是泛型,子类定义具体类型,在反序列化时,问题就重现了。 @wenshao

private static class Model<T> {
        public T value;
    }

    private static class Model2
            extends Model<byte[]> {
    }

    @Test
    public void test_01() throws Exception {
        Model2 model = new Model2();

        model.value = "ABCDEG".getBytes();

        String json = JSON.toJSONString(model, JSONWriter.Feature.WriteByteArrayAsBase64);

        assertEquals("{\"value\":\"QUJDREVH\"}", json);

        Model2 model1 = JSON.parseObject(json, Model2.class, JSONReader.Feature.Base64StringAsByteArray);
        assertArrayEquals(model.value, model1.value);
    }

错误日志:

com.alibaba.fastjson2.JSONException: offset 20, character }, line 1, column 21, fastjson-version 2.0.25 {"value":"QUJDREVH"}

	at com.alibaba.fastjson2.reader.ObjectReaderImplGenericArray.readObject(ObjectReaderImplGenericArray.java:94)
	at com.alibaba.fastjson2.reader.ORG_1_1_Model3.readObject(Unknown Source)
	at com.alibaba.fastjson2.JSON.parseObject(JSON.java:848)
。。。

@wenshao wenshao added this to the 2.0.27 milestone Mar 23, 2023
@wenshao wenshao added the bug Something isn't working label Mar 23, 2023
@wenshao
Copy link
Member

wenshao commented Mar 23, 2023

https://oss.sonatype.org/content/repositories/snapshots/com/alibaba/fastjson2/fastjson2/2.0.27-SNAPSHOT/

@Alex-hu 问题已修复,请帮忙用2.0.27-SNAPSHOT版本验证

@wenshao wenshao added fixed and removed question Further information is requested labels Mar 23, 2023
@wenshao
Copy link
Member

wenshao commented Apr 8, 2023

https://github.com/alibaba/fastjson2/releases/tag/2.0.27
问题已修复,请用新版本

@wenshao wenshao closed this as completed Apr 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working fixed
Projects
None yet
Development

No branches or pull requests

3 participants