如何将JSON数组赋值到单元格字符串?属性名显示异常求助
解决JSON数组赋值到单元格时属性名异常的问题
首先得说,你给的示例数据不是标准JSON格式,这大概率是导致属性名显示异常的根源!它看起来更像是Objective-C里的字典/数组写法(用=代替JSON的:,分号;分隔键值对,数组用()包裹),工具识别不了这种非标准格式,自然会出问题。
第一步:把非标准格式转换成标准JSON
手动调整一下格式就行,规则很简单:
- 把所有的
=替换成: - 把分号
;替换成逗号, - 把数组的
()改成[] - 给所有属性名、字符串值加上双引号(注意原来的
"Free Shipping"已经有引号了,别重复加)
转换后的标准JSON是这样的:
[ { "attribute_group_name": "Color", "attribute_name": ["Black", "White", "Gold", "Red"] }, { "attribute_group_name": "Service", "attribute_name": ["Free Shipping", "Insurance"] }, { "attribute_group_name": "Telco", "attribute_name": ["Digi", "Maxis", "Celcom"] }, { "attribute_group_name": "Material", "attribute_name": ["Wood"] } ]
第二步:把标准JSON赋值到单元格
根据你用的工具,给你两种常用方案:
方案1:用Excel VBA处理
先确保你导入了JsonConverter模块(网上搜一下就能找到,导入后就能解析JSON了),然后用这段代码:
Sub LoadJSONToCells() Dim jsonStr As String Dim jsonObj As Object Dim i As Integer ' 把上面的标准JSON字符串放这里 jsonStr = "[{""attribute_group_name"":""Color"",""attribute_name"":[""Black"",""White"",""Gold"",""Red""]},{""attribute_group_name"":""Service"",""attribute_name"":[""Free Shipping"",""Insurance""]},{""attribute_group_name"":""Telco"",""attribute_name"":[""Digi"",""Maxis"",""Celcom""]},{""attribute_group_name"":""Material"",""attribute_name"":[""Wood""]}]" ' 解析JSON Set jsonObj = JsonConverter.ParseJson(jsonStr) ' 写表头 Cells(1, 1).Value = "Attribute Group Name" Cells(1, 2).Value = "Attribute Names" ' 循环写入每一行数据 For i = 1 To jsonObj.Count Cells(i + 1, 1).Value = jsonObj(i)("attribute_group_name") ' 把属性数组合并成逗号分隔的字符串,方便单元格显示 Cells(i + 1, 2).Value = Join(jsonObj(i)("attribute_name"), ", ") Next i End Sub
方案2:用Python + Pandas处理(更简单)
如果你会Python,用Pandas写几行代码就能直接导出到Excel:
import pandas as pd import json # 标准JSON数据 json_data = ''' [ { "attribute_group_name": "Color", "attribute_name": ["Black", "White", "Gold", "Red"] }, { "attribute_group_name": "Service", "attribute_name": ["Free Shipping", "Insurance"] }, { "attribute_group_name": "Telco", "attribute_name": ["Digi", "Maxis", "Celcom"] }, { "attribute_group_name": "Material", "attribute_name": ["Wood"] } ] ''' # 解析JSON并转成DataFrame data = json.loads(json_data) df = pd.DataFrame(data) # 把属性数组合并成字符串 df['attribute_name'] = df['attribute_name'].apply(lambda x: ', '.join(x)) # 导出到Excel(会生成一个叫attributes.xlsx的文件) df.to_excel('attributes.xlsx', index=False)
只要先把数据转成标准JSON,再用上面的方法处理,属性名显示异常的问题就能解决啦!
内容的提问来源于stack exchange,提问作者Test 87
相关产品推荐
相关产品推荐

