[ 
https://issues.apache.org/jira/browse/THRIFT-1203?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13046960#comment-13046960
 ] 

Bill Dortch commented on THRIFT-1203:
-------------------------------------

A TreeMap would not preserve insertion order, or the order in which entries 
appeared in the original JSON, only the natural ordering of the keys, which may 
or may not be the same thing.  A LinkedHashMap preserves insertion order. 
However, there is no reason to do this. JSON objects, like most map-like data 
structures, are unordered.  As the definition at http://json.org states, "An 
object is an unordered set of name/value pairs." It is an error for a client, 
including a unit test client, to expect the entries of a JSON object to appear 
in a particular order, just as it would be an error to expect the presence or 
absence of whitespace, which is not significant.  A unit test based on 
comparison to a particular string representation of a JSON object is inherently 
flawed, as would be an application that did the same.

> Java server returns JSON map items in the wrong order
> -----------------------------------------------------
>
>                 Key: THRIFT-1203
>                 URL: https://issues.apache.org/jira/browse/THRIFT-1203
>             Project: Thrift
>          Issue Type: Bug
>          Components: Java - Compiler, Java - Library
>    Affects Versions: 0.6, 0.7
>            Reporter: Henrique Mendonca
>            Priority: Minor
>              Labels: java, test, test-server
>
> This is a old bug I have forgotten to register.
> lib/js/test uses a Java server to run its unit tests, and by doing so I could 
> see that there is a small problem on the Java JSON map decoder.
> The unit test "testMap" should echo a map<int,int> back to the client without 
> changing it, but it's messing up with the items order, e.g. {7=77, 8=88, 
> 9=99} returns {8=88, 9=99, 7=77}
> To run the server:
> thrift-trunk/lib/java$ ant compile-test
> thrift-trunk/lib/js/test$ ant testserver
> and go to http://localhost:8088/test/test.html
> Java test server console output:
> [java] Incoming content: 
> [1,"testMap",1,0,{"1":{"map":["i32","i32",3,{"7":77,"8":88,"9":99}]}}]
> [java] testMap({{8=88, 9=99, 7=77}})
> [java] Outgoing content: 
> [1,"testMap",2,0,{"0":{"map":["i32","i32",3,{"8":88,"9":99,"7":77}]}}]
> It's minor but it would be nice if any Java developer could have a look on it.
> Thanks a lot.
> ps.: the same works with a cpp server

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to