具有不同对象中的对象的JSON数组

时间:2012-05-17 11:30:50

标签: json

我搜索了很多网站但找不到问题的解决方案。基本上我的要求有点棘手,有时我自己觉得这是不可能的。任何人都可以帮助我吗?

我的要求是我有3个继承自接口的类。我现在想要创建一个具有以下结构的JSON数组:

interface i {
}

class A implements i {
    field l;  
    field 2;
}

首先感谢您对解决我的问题的兴趣, 我在问题中提到的所有对象都是数据库持久性对象。 我有联系对象,通信对象和地址对象,都是db持久化对象 单个联系人具有多个通信和多个地址。 因此,联系人会在表格和通信以及2个不同表格中的地址中持续存在,并参考联系人的唯一标识符 像

这样的东西

联系表:

id firstname lastname

3 xyz abc

通讯表:

id contactid number

1 3 999999999

地址表:

id contactid place 1 3印度

在数据库中持久化之后,我想创建我想在服务器中发送的json数组。

final Collection<Syncable> collection = new ArrayList<Syncable>();
        collection.add(contact);
        collection.add(comm);
        collection.add(address);

        result =  HttpRestUtil.post(url,*** new Gson().toJson(collection)***,JSON,header );

Gson()。toJson(collection)返回字符串中的json,我想在服务器端发送。字符串看起来如下

[{"firstname":"xyz","lastname":"abc"},         //contact          
 {"number":"99999999"},                        //communication
 {"place":"india"}                             //address
]

但实现了我的服务器,它采用格式为

的json
 [ {"firstname":"xyz",
 "lastname":"abc",
 {"number":"999999999"}
 {"place":"india"}
}]

服务器被编码为这样,整个json被反序列化为联系,通信,地址

的对象

我希望我在这个时候改变我的问题 再次感谢很多

class B implements i {
    field 3;
    field 4;
}

class C implements i {
    field 5;
    field 6; 
}

现在我想要一个JSON数组,它具有以下格式,这个JSON是A

类型
[
    "field1": "value",
    "field2": "value",
    "objectB": "{ 'field3':'value','field4':'value'}",
    "objectC": "{ 'field5':'value','field6':'value'}"
]

我的要求是B,C类应该是A类的字段。

可以给我解决方案的一种方法是使B和C类成为A的内部类,但我的对象结构不允许这样做。帮助这个高度赞赏。

提前致谢

2 个答案:

答案 0 :(得分:2)

我有几个问题/意见:

  • 如果你的JSON代表你的A类,它应该是一个 对象,而不是数组。将括号切换为花括号。

  • 如果B和C的实例存储在A实例的字段中,您应该这样做 更新您的班级模型以反映这一点。目前,他们只是 三个不同的类。您的所有字段都是字符串,基于您发布的JSON。如果将类型信息添加到类声明中的字段,将会有所帮助。

  • 发布您用于生成JSON的代码并不会有什么坏处。

答案 1 :(得分:0)

我没有找到解决上述问题的任何方法,为了获得解决方案我不得不改变我的对象结构 现在我得到了我需要的json格式。

我已将联系人对象更改为包含通讯和地址字段

public class Contact
{
      String firstName;
      String lastName;
      Communication comm[];
      Address address[];
}

沟通和地址是两个不同的类

设置Contact对象的值

 new Gson().toJson(contact);

给了我需要的json字符串

参考:

http://en.wikipedia.org/wiki/GSON