我有下面的pysppark行类型数据:

indv_msg = [Row(cbm_json_output=Row(country_code='USA', date='06-10-2023', date_epoch='1696550400', id='USA-001535-1696550400', interfaceVersion='1.0.0', opmode_car_door=Row(health_category='GREEN', msg_id='1', num_yellow_preds_in_last_14_days=0, reason=None, reasonDetail=None), opmode_landing_door=Row(health_category='GREEN', msg_id='1', reason=None, reasonDetail=None), sensor=Row(component_type=None, health_category=None, landing_priority=None, msg_id='1', num_yellow_preds_in_last_14_days=None, reason=None, reasonDetail=None), unit_id='001535'))

在try 转换为json字符串时,它正在消除赋值字段,如"COUNTRY_CODE"、"DATE"、...

user_encode_data = json.dumps(indv_msg, indent=2)

结果: 消息源(_M)

 [
  [
    "USA",
    "06-10-2023",
    "1696550400",
    "USA-001535-1696550400",
    "1.0.0",
    [
      "GREEN",
      "1",
      0,
      null,
      null
    ],
    [
      "GREEN",
      "1",
      null,
      null
    ]
]

预期结果: 消息源(_M)

[
  [
    "country_code" : "USA",
    "date" : "06-10-2023",
    "date_epoch": 1696550400",
     ....
     ....
   ]
 ]

推荐答案

除了@Shubham Sharma,您只需调用row.asDict(True)并将递归设置为True即可.

当我在我的环境中try 时,我也得到了同样的结果.

enter image description here

因此您可以使用下面代码块来获得json输出.

indv_msg_dict = [row.asDict(True) for row in indv_msg]

user_encode_data = json.dumps(indv_msg_dict, indent=2)

print(user_encode_data)

enter image description here

Json相关问答推荐

PowerShell脚本未按预期生成预期的JSON输出

NIFI-我需要数组的信息,但只需要第一个信息

Allof Indide的JSON模式之一

如何在改装Android中将ResponseBody转换为JSONObject

属性错误:';ActivitiesClient';对象没有属性';base_url';

递归解码嵌套列表(具有任意深度的列表列表)

如何将属性拆分为嵌套的JSON内容?

在 CodePipeline 中调用 lambda 时传递用户参数

JSON 字段的多个名称

在 postgresql 中将行转换为 json 对象

使用 Javascript 判断 JSON 对象是否包含值

JSON 模式验证

Android 上的 JSON - 序列化

从多维数组数据生成json字符串

jQuery.getJSON 和 jQuery.parseJSON 返回 [object Object]?

如何自动修复无效的 JSON 字符串?

将 CoffeeScript 项目转换为 JavaScript(不缩小)?

在 Java 中比较两个 JSON 文件的最佳方法

可以在 SharedPreferences 中保存 JSON 数组吗?

如何从 JSON 响应中提取单个值?