douji2520 2019-07-30 09:54
浏览 53

解析包含复杂结构的字符串

I'm receiving a third-party API payload response like:

{
    "message": "Validation failed because [{reason=CONDITIONAL_INVALID_VALUE, field=/targetingCriteria, batchIndex=0, type=INVALID_VALUE, message=/locale cannot be set to en if urn:li:adTargetingFacet:interfaceLocales is set to urn:li:locale:it_IT, parameters={field1=/locale, value2=urn:li:locale:it_IT, value1=en, field2=urn:li:adTargetingFacet:interfaceLocales, key=}}, {reason=FIELD_VALUE_TOO_LOW, field=dailyBudget, batchIndex=0, type=INVALID_VALUE, message=/dailyBudget/amount value 1 cannot be lower than 10.00, parameters={min=10.00, field=/dailyBudget/amount, costType=CPM, type=SPONSORED_UPDATES, value=1, key=}}]",
    "status": 400
}

and I'd like to transform in something like:

{
    "errors": [{
            "reason": "CONDITIONAL_INVALID_VALUE",
            "field": "/targetingCriteria",
            "batchIndex": "0",
            "type": "INVALID_VALUE",
            "message": "/locale cannot be set to en if urn:li:adTargetingFacet:interfaceLocales is set to urn:li:locale:it_IT",
            "parameters": "{field1=/locale, value2=urn:li:locale:it_IT, value1=en, field2=urn:li:adTargetingFacet:interfaceLocales, key=}"
        },
        {
            "reason": "FIELD_VALUE_TOO_LOW",
            "field": "dailyBudget",
            "batchIndex": "0",
            "type": "INVALID_VALUE",
            "message": "/dailyBudget/amount value 1 cannot be lower than 10.00",
            "parameters": "{min=10.00, field=/dailyBudget/amount, costType=CPM, type=SPONSORED_UPDATES, value=1, key=}"
        }
    ]
}

But I'm struggling to find a clear golang approach to this problem, the main problems are:

  1. no valid json is available: word are not correctly quoted with "
  2. = symbol instead of :
  3. nested graphs bracket

I'm currently try to transform in a valid json string and then parse as json but I have various problem with nested elements

Any idea?

EDIT: This is what I've done right now: https://play.golang.org/p/B7bdPCJoHc2

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
    • ¥20 matlab yalmip kkt 双层优化问题
    • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
    • ¥88 实在没有想法,需要个思路
    • ¥15 MATLAB报错输入参数太多
    • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
    • ¥15 有赏,i卡绘世画不出
    • ¥15 如何用stata画出文献中常见的安慰剂检验图
    • ¥15 c语言链表结构体数据插入