首页 新闻 会员 周边

delphi json 和TObject 类型 相互转换 问题

0
悬赏园豆:30 [已关闭问题] 关闭于 2015-01-17 14:20

使用 DBXJSONReflect 可以把json 和TObject 类型 相互转换。但是转换的结果却是让人难以接受。
使用方法见:http://blog.csdn.net/cmdasm/article/details/12784627
例如:
delphi:
{"type":"dtTest.TChapter","id":3,"fields":{"ID":2,"Caption":"我的章节2"}}

C#, java ,js:
{"ID":5,"Caption":"我的章节5"}

delphi转换过来的对象,每个对象都增加了,{"type":"dtTest.TChapter","id":3,"fields":{}

对于数据集的时候这种情况可想而知。
这样,delphi写的客户端和其他语言写的服务器的数据对接就出现了兼容问题。
单个对象还好处理,但是对于下面这种结构,要兼容,可就非常困难了。
delphi 下:
{"type":"dtTest.TRChapterArr","id":1,"fields":{"Body":[{"type":"dtTest.TChapter","id":2,"fields":{"ID":1,"Caption":"我的章节1"}},{"type":"dtTest.TChapter","id":3,"fields":{"ID":2,"Caption":"我的章节2"}},{"type":"dtTest.TChapter","id":4,"fields":{"ID":3,"Caption":"我的章节3"}},{"type":"dtTest.TChapter","id":5,"fields":{"ID":4,"Caption":"我的章节4"}},{"type":"dtTest.TChapter","id":6,"fields":{"ID":5,"Caption":"我的章节5"}}],"LoginState":1,"MessageStr":"","State":1}}

C# java:
{"Body":[{"ID":1,"Caption":"我的章节1"},{"ID":2,"Caption":"我的章节2"},{"ID":3,"Caption":"我的章节3"},{"ID":4,"Caption":"我的章节4"},{"ID":5,"Caption":"我的章节5"}],"LoginState":1,"MessageStr":"","State":1}


各位大侠,有没有好的办法能解决这个问题。

piaopiaoran的主页 piaopiaoran | 初学一级 | 园豆:133
提问于:2013-12-26 11:54
< >
分享
所有回答(1)
0

 

不同语言转换规则不一样, DBX是为了自己交互方便用的, 如果想和其他语言做数据交换最好自定义格式

自己写一个转换不就好了, 没啥麻烦的, 还可以先把列名和列类型都提取出来, 数据单独存放, 这样还能省字节呢

比如:

 

{ "T": [ { "T": 0, "N": "ID", "L": 20},
         { "T": 0, "N": "Caption", "L": 20}], 
    "R": [ [ 1,"我的章节1"],
           [ 2,"我的章节2"],
           [ 3,"我的章节3"],
           [ 3,"我的章节4"]]
}        

 

 

 

 

黑暗煎饼果子 | 园豆:354 (菜鸟二级) | 2013-12-30 08:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册