У меня есть класс, написанный на 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; }
}
Джава:
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 не добавляет к строке?