【 在 ylh0315 的大作中提到: 】
: //这个就是所谓的“模板”了,它使我们能够"看"到未知结构的内容。
: typedef struct {
: INT4 type;
: ...................
看看程序是怎样的:
JSON_OBJECT stu_to_json(JSON_OBJECT json,void *data,T_PkgType * typ,const char *choose,char *colidx)
{
int i,colnum,n;
T_PkgType *tp;
char buf[100];
const char *cp;
if(!json) return json;
colnum=set_offset(typ);//第一个offset是-1,就计算,否则直接返回。
tp=typ;
if(!choose||!*choose) { // 没有选择,全部加入
for(i=0;tp->type>=0;i++,tp++) {
if(tp->bindtype & NOSELECT) continue;//如果select不要这个,序列化也不要。
if(choose&&isnull((char *)data+tp->offset,tp->type)) continue;
if(tp->type==CH_STRUCT) {
JSON_OBJECT sub=json_object_new_object();
stu_to_json(sub,(char *)data+tp->offset,
(T_PkgType *)tp->format,0,0);
json_object_object_add(json,plain_name(tp->name),sub);
continue;
}
add_field_to_object(json,data,tp);
}
return json;
}
这个函数比我前边给的多了几个参数,不要紧,前三个一样,后边写0即可。
--
修改:ylh0315 FROM 221.221.50.*
FROM 221.221.50.*