gpt4 book ai didi

c# - 无法使用 Gson 反序列化 byte[]

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:12:20 26 4
gpt4 key购买 nike

我有一个用 Java 编写的类和用 C# 编写的同一个类。我正在将 C# 类序列化为 json 字符串,并试图在 Java 端反序列化它。在我向两个类添加 byte[] 字段之前,一切都进行得很顺利。这是类定义:C#:

public class RegisterRequest : GenericRequest
{
public string name { set; get; }
public string sex { set; get; }
public string birthday { set; get; }
public string from { set; get; }
public string about { set; get; }
public byte[] image { set; get; }
}

Java:

public class RegisterRequest extends GenericRequest{
private String name;
private String sex;
private String birthday;
private String from;
private String about;
private String pictureUrl;
private byte[] image;
}

C#端的序列化使用:request.ToJson() (Json.NET)并且Java反序列化使用:RegisterRequest rr = gsonObject.fromJson(msg, RegisterRequest.class);(使用Gson。msg是json字符串)

当我不发送字节数组中的任何内容时,它仍然有效。但是当我填充数组时,Java 端出现异常:com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 159089

我猜测需要有一些东西来标记 Gson 识别但 Json.NET 不添加到字符串的数组的开头?

最佳答案

鉴于上面评论的输入

"image":"/9j/4AAQSkZJRgAB..."

并查看 Gson 如何序列化 byte[]

"a":[96,-76,32,-69,56,81,-39,-44...

答案很明显:Gson 使用 json 数组,而 json.net 使用 json 字符串。你必须改变其中之一。为 gson 编写自定义序列化程序很容易(尽管我从未尝试过使用 byte[]),其他工具可能也是如此。

关于c# - 无法使用 Gson 反序列化 byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12109536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com