我搜索了很多网站但找不到问题的解决方案。基本上我的要求有点棘手,有时我自己觉得这是不可能的。任何人都可以帮助我吗?
我的要求是我有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的内部类,但我的对象结构不允许这样做。帮助这个高度赞赏。
提前致谢
答案 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字符串
参考: