1

我搜索了许多网站,但找不到解决问题的方法。基本上我的要求有点棘手,有时我自己觉得这是不可能的。谁能帮我?

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

interface i {
}

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

首先感谢您对解决我的问题的兴趣,我在问题中提到的所有对象都是数据库持久性对象。我有联系人对象、通讯对象和地址对象,都是db持久化对象一个联系人有多个通讯和多个地址。因此,联系人保留在一个表中,并在 2 个不同的表中保留通信和地址,参考联系人的唯一标识符,例如

联系表:

id 名字 姓氏

3 xyz abc

通讯表:

id 联系人号码

1 3 999999999

地址表:

id contactid 地点 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 的内部类,但我的对象结构不允许这样做。对此高度赞赏的帮助。

提前致谢

4

2 回答 2

2

我有几个问题/意见:

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

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

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

于 2012-05-17T13:47:10.300 回答
0

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

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

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

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

设置联系人对象的值后

 new Gson().toJson(contact);

给了我我需要的 json 字符串

参考:

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

于 2012-05-21T11:42:59.587 回答