下边的,data就是未知的struct,模板是typ,choose是可以选择部分成员序列化,colidx是索引,可以较快的找到名字,没有也行,在模板里顺序查找呗。
序列化到json里。
【 在 freyoneby 的大作中提到: 】
: C语言不知道struct的信息?你是指只生声明了一个指针?还是不懂,有来段简单代码
: - 来自 水木社区APP v3.5.7
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
tp=typ;
if(!choose||!*choose) { // 没有选择,全部加入
for(i=0;tp->type>=0;i++,tp++) {
if(tp->bindtype & NOSELECT) continue;//不想要的成员也可以在此剔除
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);//把这个成员加到JSON里
}
return json;
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*