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

ASF GitHub Bot commented on TINKERPOP-1274:
-------------------------------------------

Github user PommeVerte commented on the issue:

    https://github.com/apache/tinkerpop/pull/351
  
    Hey guys,
    
    I've been super busy lately but I definitely plan on diving deep into this 
PR over the weekend. One quick remark though.
    
    1. Even the JSON supported types are not prone to lossiness in multi 
language settings. They should also be typed.
    2. In a multi language setting, having type names without their java 
classes is not helpful. 
    
    I can illustrate both of these points with the following JSON : `{"id":1}`
    The client assumes `id` is `int` but what exactly is an int? is it `16bit`, 
`32bit`, or `64bit`? Languages will have their own definition here. Actually 
some languages will even have different values of `int` depending on how they 
were compiled. 
    Changing it to `{"id":[{"@class":"Integer"}, 1]}` is not helpful in this 
case either. However the following is explicit and is something you can work 
with: `{"id":[{"@class":"java.lang.Integer"}, 1]}`. It's immediately 
identifiable and well documented. The client knows this is a 32bit Int and can 
work accordingly. Without this you would have to go through documentation or 
code to figure out what you were dealing with. 
    
    In conclusion:
    
    1. Thinking about it some more it's possible that Integer is the only 
special case that would need typing in the json supported types. I'll give it 
some more though. We could possibly have a "verbose" option for those who 
require typing of everything.
    2. Type names should refer to the java class. This also seems to make sense 
when dealing with custom objects.
    
    
    PS: I would also like to point out that this format 
`[{"@class":"java.lang.Integer"}, 1]` can be a pain in systems that do not 
necessarily order lists. With these systems you need to check that your list 
has two elements, that one is a map, and that the map contains a `@class` key. 
Costly operation.
    Perhaps `{"@class":"java.lang.Integer", "value": 1}` is a better option. 


> GraphSON Version 2.0
> --------------------
>
>                 Key: TINKERPOP-1274
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1274
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: io
>    Affects Versions: 3.1.2-incubating
>            Reporter: stephen mallette
>            Priority: Minor
>             Fix For: 3.2.1
>
>
> Develop a revised version of GraphSON that provides better support for 
> non-JVM languages that consume it. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to