OpenEdge JsonObject添加JsonArray:嵌套结构实现咨询
问题:将campaigns数组嵌套进data数组的对象内部
期望的JSON结构
{ "data": [ { "external_id": "AlphaNumeric", "external_branch_id": "AlphaNumeric", "name": "Super Awesome Guy", "cellphone": "String_int", "gender": "(m/f only)", "autosuggest": 0, "campaigns": [ { "name": "Super Awesome Campaign" } ] } ] }
当前错误输出
{ "data": [ { "external_id": "97816", "external_branch_id": "1", "external_user_id": null, "name": "AIDE RODRIGUEZ MAR", "force_delete_rs": false, "rs": null, "cellphone": "1111111111", "telephone": "5555102609", "email": "lizmar056@gmail.com", "customer_category": null, "gender": "M", "birthday": "2001-11-09", "autosuggest": false, "force_delete_addresses": false } ], "campaigns": [ { "name": "Bono Activo" } ] }
错误原因
你直接把campaigns数组添加到了最外层的oJson对象中,导致它和data数组处于同级结构,而不是嵌套进data数组内的每个对象里。
正确实现代码
/* Create new JsonObjects */ oJson = NEW JsonObject(). oDataItem = NEW JsonObject(). aJson1stTable = NEW JsonArray(). aJson2ndTable = NEW JsonArray(). // 读取data表数据到data数组 aJson1stTable:READ(TEMP-TABLE data:HANDLE). // 读取campaigns表数据到campaigns数组 aJson2ndTable:READ(TEMP-TABLE campaigns:HANDLE). // 遍历data数组中的每个对象,将campaigns数组嵌套进去 DO i = 1 TO aJson1stTable:LENGTH: oDataItem = CAST(aJson1stTable:Get(i), JsonObject). oDataItem:Add("campaigns", aJson2ndTable). END. // 将data数组添加到最外层对象 oJson:Add("data", aJson1stTable). /* Write the JSON string to a character variable */ oJson:Write(jSon_string,TRUE).
关键修改说明
- 先读取
data和campaigns的表数据到对应的数组中 - 遍历
data数组里的每个JsonObject,把campaigns数组添加到每个对象内部 - 最后再把
data数组添加到最外层的oJson对象中,确保层级正确
内容的提问来源于stack exchange,提问作者Luis Martinez
相关产品推荐
相关产品推荐

