discomarathon / google-gson

Automatically exported from code.google.com/p/google-gson
0 stars 0 forks source link

Not able searialize HashMap and adding instance into JSON #224

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
HashMap<Customer, List<CampaignProduct>> customerCplHashMap = new 
HashMap<Customer, List<CampaignProduct>>();

customerCplHashMap.put(semCustomer, cpls);
dumpJson(writerCustCpl, gson.toJson(customerCplHashMap));

OUTPUT

{"cs.com.test.domain.Customer@7cd6de":[{"id":1532,"name":"25-2"}]}

What is the expected output? What do you see instead?
{""id":1,"name":"John":[{"id":1532,"name":"25-2"}]}

What version of the product are you using? On what operating system?
WINDOWS and GSON 1.5 Beta

Please provide any additional information below.

Original issue reported on code.google.com by das.k.ab...@gmail.com on 5 Aug 2010 at 5:20

GoogleCodeExporter commented 9 years ago
I meant HashMap key where key is userdefined not able to serialize properly.

Original comment by das.k.ab...@gmail.com on 5 Aug 2010 at 5:24

GoogleCodeExporter commented 9 years ago
Definitely a problem, but the solution isn't obvious.

Perhaps GSON should look at the conversion for the map's key type. If it 
converts to a primitive, then a GSON could emit an object. If it converts to 
another type, GSON could emit an array of pairs. For example, the customer 
above could be converted to this:
  [
    [{ "customerId": 1, "name": "John" },{"campaignId": 1532, "name": "25-2"}]
  ]
We could emit something more concise for say, a map with integer keys:
  { "5": "five", "6": "six" }

Original comment by limpbizkit on 27 Aug 2010 at 7:00

GoogleCodeExporter commented 9 years ago
Thanks for reply! Is it going to be fixed in GSON library soon?

Original comment by das.k.ab...@gmail.com on 27 Aug 2010 at 5:08

GoogleCodeExporter commented 9 years ago
 [
    [{ "customerId": 1, "name": "John" },{"campaignId": 1532, "name": "25-2"}]
  ]

I'm not able to understand how to convert?

I've Hashmap<Customer, List<Campaign>>, in this case how do I put above one as 
a key?

Original comment by das.k.ab...@gmail.com on 27 Aug 2010 at 5:16

GoogleCodeExporter commented 9 years ago
I'm not sure about when it'll be fixed. In the interim you can work around the 
problem by writing a custom JsonSerializer.

Original comment by limpbizkit on 28 Aug 2010 at 2:13

GoogleCodeExporter commented 9 years ago
This is basically a dupe of issue 210, which provides an example patch that 
solves this problem.

Original comment by jsha...@google.com on 28 Aug 2010 at 6:40

GoogleCodeExporter commented 9 years ago

Original comment by limpbizkit on 28 Aug 2010 at 8:26