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

时间:2019-07-30 09:54:50

标签: json parsing go linkedin linkedin-api

我收到第三方API有效负载响应,例如:

{
    "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
}

我想进行以下转换:

{
    "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=}"
        }
    ]
}

但是我正在努力寻找一种解决该问题的明确方法,主要问题是:

  1. 没有可用的有效json:单词未正确用“
  2. 引用”
  3. =符号代替:
  4. 嵌套图括号

我目前正在尝试转换有效的json字符串,然后解析为json,但是嵌套元素存在各种问题

有什么主意吗?

编辑:这是我目前正在执行的操作:https://play.golang.org/p/B7bdPCJoHc2

0 个答案:

没有答案