如何实现JSON的序列化?

CodeProject-Jerry 2009-04-07 02:54:58
目前正在编写浏览器的扩展接口。

从JS中传递一个JSON对象到程序中,程序需要将这个对象序列化为字符串后发送到服务器上。服务器使用.Net,,Net本身提供的类能够将JSON字符串序列化为对象。

问题是如何在客户端中将JSON对象序列化为字符串?

我已经拿到了IDispatch指针,但JSON对象是没有类型库的,其属性定义也是不可预知的。

我现在是在JS中采用 for( p in o)的方式序列化,
但能否改到Native C++中, 直接通过IDispatch接口序列化??
如何通过IDispatch接口 枚举出它所有的属性成员。

ITypeInfo接口貌似不行啊


望高人指点

...全文
220 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
CodeProject-Jerry 2009-04-07
  • 打赏
  • 举报
回复
感谢james 给分


CComQIPtr<IDispatchEx> pParamEx = pParam;
if( !pParamEx )
return;

DISPID dispid;

HRESULT hr = pParamEx->GetNextDispID(fdexEnumAll, DISPID_STARTENUM, &dispid);
while (hr == NOERROR)
{
BSTR bstrName = NULL;
hr = pParamEx->GetMemberName(dispid, &bstrName);
SysFreeString(bstrName);

hr = pParamEx->GetNextDispID(fdexEnumAll, dispid, &dispid);
}
jameshooo 2009-04-07
  • 打赏
  • 举报
回复
如果不能获得ITypeInfo,就应该从IDispatch查询IDispatchEx接口(JS中定义的对象都是IDispatchEx),然后使用它的GetNextDispID方法枚举所有属性和方法,再调用GetMemberProperties获得其成员的属性。需要注意的是,JSON对象的方法参数是无法获取的,不过并不要紧,所有JS对象的方法参数都不是固定的。

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧