使用JsonConverter提取JSON特定值时遭遇类型不匹配错误求助
解决JsonConverter提取AsAtDate时的类型不匹配问题
嘿,我一眼就瞅出你代码里的问题啦!先看看你给的JSON结构:Chocolate对象下面,Price是个纯数值(比如1.0),而AsAtDate是和Price平级的字段,根本不是Price的子属性。你最后一行代码错误地把AsAtDate当成了Price的下一级,这可不就触发类型不匹配错误了嘛——总不能从一个数字里再掏出来个属性吧!
修正后的完整代码
我不仅帮你改了出错的那行,还优化了之前的循环代码,让它更易懂:
result = objHTTP.responseText Set parsedResult = JsonConverter.ParseJson(result) ' 遍历所有口味,把Price写入单元格 i = 3 For Each flavorKey In parsedResult("From") wsSheet0.Cells(i, 12) = parsedResult("From")(flavorKey)("Price") i = i + 1 Next ' 提取Chocolate的AsAtDate(修正了路径问题) With parsedResult("From")("Chocolate") wsSheet0.Cells(11, 12) = .Item("AsAtDate") ' 要是你需要同时提取Chocolate的Price,也可以加这行 ' wsSheet0.Cells(10, 12) = .Item("Price") End With
核心修正要点
- 路径错误修复:把
parsedResult("From")("Chocolate")("Price")("AsAtDate")改成parsedResult("From")("Chocolate")("AsAtDate"),因为AsAtDate和Price都是Chocolate的直接子字段。 - 变量名更直观:循环里的
Item换成了flavorKey,一眼就能看出它是每个口味的名称(比如Chocolate、Lime)。 - 代码更简洁:用
With语句直接绑定Chocolate对象,不用重复写长长的路径,读起来更舒服。
这样改完之后,那个类型不匹配的错误应该就消失啦,你可以试试运行看看效果!
内容的提问来源于stack exchange,提问作者S31
相关产品推荐
相关产品推荐

