thrift-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Can Celasun (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (THRIFT-4011) Sets of Thrift structs generate Go code that can't be serialized to JSON
Date Fri, 23 Dec 2016 10:49:58 GMT

     [ https://issues.apache.org/jira/browse/THRIFT-4011?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Can Celasun updated THRIFT-4011:
--------------------------------
    Description: 
Consider the following structs:

{code}
struct Foo {
  1: optional string foo
}

struct Bar {
  1: optional set<Foo> foos
}
{code}

This compiles into the following Go code:

{code}
type Bar struct {
	Foos map[*Foo]struct{} `thrift:"foos,1" db:"foos" json:"foos,omitempty"`
}
{code}

Even though the generated code has tags for JSON support, Bar can't be serialized to JSON:
{code}
json: unsupported type: map[*Foo]struct {}
{code}

One solution would be to use slices, not maps, for Thrift sets. Thoughts?

  was:
Consider the following structs:

{code}
struct Foo {
  1: optional string foo
}

struct Bar {
  1: optional set<Foo> foos
}
{code}

This compiles into the following Go code:

{code}
type Bar struct {
	Foos map[*Foo]struct{} `thrift:"foos,1" db:"foos" json:"foos,omitempty"`
}
{code}

Even though the generated code has tags for JSON support, Bar can't be serialized to JSON:
{code}
json: unsupported type: map[*Foo]struct {}
{code}

One solution would be to use slices, not maps, for Thirft sets ands lists. Thoughts?


> Sets of Thrift structs generate Go code that can't be serialized to JSON
> ------------------------------------------------------------------------
>
>                 Key: THRIFT-4011
>                 URL: https://issues.apache.org/jira/browse/THRIFT-4011
>             Project: Thrift
>          Issue Type: Bug
>          Components: Go - Compiler
>            Reporter: Can Celasun
>
> Consider the following structs:
> {code}
> struct Foo {
>   1: optional string foo
> }
> struct Bar {
>   1: optional set<Foo> foos
> }
> {code}
> This compiles into the following Go code:
> {code}
> type Bar struct {
> 	Foos map[*Foo]struct{} `thrift:"foos,1" db:"foos" json:"foos,omitempty"`
> }
> {code}
> Even though the generated code has tags for JSON support, Bar can't be serialized to
JSON:
> {code}
> json: unsupported type: map[*Foo]struct {}
> {code}
> One solution would be to use slices, not maps, for Thrift sets. Thoughts?



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

Mime
View raw message