【发布时间】:2012-08-24 12:37:05
【问题描述】:
我有一个用 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 不添加到字符串中的数组的开头?
【问题讨论】:
-
@MAXE Gson 正在反序列化
-
Json 是像 XML 一样的标准,而 Gson 看起来像 google 写的库
-
抱歉,回滚出错>.>
-
你试过在java中使用带有大写B的字节吗?
-
JSON 在 UTF-8 中的样子如何?可以提供样品吗?
标签: c# java json json.net gson