kshchepanovskyi / protostuff-googlecode-exported

Automatically exported from code.google.com/p/protostuff

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Serialization\Deserialization of primitive & wrapper lists and arrays in JSonIOUtil

GoogleCodeExporter opened this issue · comments

What steps will reproduce the problem?

1) Serialization gives the length of the list\array

        Schema schema = RuntimeSchema.getSchema(Integer.class);
        byte[] bytes = JsonIOUtil.toByteArray(listTets, schema, false);
        System.out.println(new String(bytes));

        Integer[] intArr = new Integer[]{1,2,3};
        byte[] byteArr = JsonIOUtil.toByteArray(intArr, schema, false);
        System.out.println("Int array  response " + new String(byteArr));

        List<Integer> intList = new ArrayList<Integer>();
        intList.add(1);
        intList.add(2);
        intList.add(3);
        byteArr = JsonIOUtil.toByteArray(intArr, schema, false);
        System.out.println("Int list response " + new String(byteArr));

2) Deserialization fails - I have used parseListFrom as the example which fails 
for primitive & primitive wrapper arrays and lists, what should be the ideal 
operation for array tupes serialization (The example is for a String list 
parsing?

Schema schema1 = RuntimeSchema.getSchema(String.class);
String jsonString = "[\"String1\",\"String2\"]";
StringReader reader = new StringReader(jsonString);
List<String> responseList = JsonIOUtil.parseListFrom(reader, schema1, false);

com.dyuproject.protostuff.JsonInputException: Expected token: { but was 
VALUE_STRING on message java.lang.String

What version of the product are you using? On what operating system?

1.0.7 on Win 7 enterprise.


Please provide any additional information below.

Original issue reported on code.google.com by vimalath...@gmail.com on 11 Jul 2013 at 5:59

Like protobuf, the top level objects that you can directly serialize are 
limited to messages (pojos).
You cannot directly serialize primitive fields.

Use this instead:
message IntList {
  repeated int32 x = 1;
}

Original comment by david.yu...@gmail.com on 12 Jul 2013 at 1:04