为了账号安全,请及时绑定邮箱和手机立即绑定

解析字符串化的 JSON

解析字符串化的 JSON

Go
翻翻过去那场雪 2022-07-25 10:38:44
我正在尝试使用 Go 解析字符串化的 JSON,但我找不到任何解释如何进行有效解析的内容。示例 JSON:{ "messages":"<ul class=\"messages\"><li class=\"success-msg\"><ul><li><span>Item succcessfully added<\/span><\/li><\/ul><\/li><\/ul>", "app_cart":"[]", "addcartrows":"[{\"productId\":\"1675688\",\"quantity\":1,\"unitPrice\":\"290.00\",\"currency\":\"EUR\",\"sku\":\"P00525485-3\"}]", "minicart_content":"<ul class=\"checkout-types minicart\">\n<li>", "cart_qty":"1", "added_product_json":"{\"id\":\"1675695\",\"size\":\"40\"}"}我通常通过将其转换为结构来解析 json。像这样:type AutoGenerated struct {    Messages         string `json:"messages"`    AppCart          string `json:"app_cart"`    Addcartrows      string `json:"addcartrows"`    MinicartContent  string `json:"minicart_content"`    CartQty          string `json:"cart_qty"`    AddedProductJSON string `json:"added_product_json"`}var j AutoGenerated if err = json.Unmarshal(body, &AutoGenerated); err != nil {    fmt.Println(err) // json: cannot unmarshal string into Go struct field AutoGenerated.added_product_json}但是我不知道如何正确解析这种类型的响应。有什么帮助吗?
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

分两步完成。


package main


import (

    "encoding/json"

    "fmt"

)


func main() {

    type AutoGenerated struct {

        Messages         string `json:"messages"`

        AppCart          string `json:"app_cart"`

        Addcartrows      string `json:"addcartrows"`

        MinicartContent  string `json:"minicart_content"`

        CartQty          string `json:"cart_qty"`

        AddedProductJSON string `json:"added_product_json"`

    }

    type addedProduct struct {

        ID   string `json:"id"`

        Size string `json:"size"`

    }

    type productRow struct {

        ProductID string `json:"productId"`

        Quantity  int    `json:"quantity"`

        UnitPrice string `json:"unitPrice"`

        Currency  string `json:"currency"`

        SKU       string `json:"sku"`

    }

    var j AutoGenerated


    body := []byte(`{

 "messages":"<ul class=\"messages\"><li class=\"success-msg\"><ul><li><span>Item succcessfully added<\/span><\/li><\/ul><\/li><\/ul>",

 "app_cart":"[]",

 "addcartrows":"[{\"productId\":\"1675688\",\"quantity\":1,\"unitPrice\":\"290.00\",\"currency\":\"EUR\",\"sku\":\"P00525485-3\"}]",

 "minicart_content":"<ul class=\"checkout-types minicart\">\n<li>",

 "cart_qty":"1",

 "added_product_json":"{\"id\":\"1675695\",\"size\":\"40\"}"

}`)


    if err := json.Unmarshal(body, &j); err != nil {

        panic(err)

    }


    var k []productRow

    if err := json.Unmarshal([]byte(j.Addcartrows), &k); err != nil {

        panic(err)

    }


    var u addedProduct

    if err := json.Unmarshal([]byte(j.AddedProductJSON), &u); err != nil {

        panic(err)

    }

    fmt.Printf("%#v\n\n", j)

    fmt.Printf("%#v\n\n", k)

    fmt.Printf("%#v\n\n", u)

}



查看完整回答
反对 回复 2022-07-25
?
catspeake

TA贡献1111条经验 获得超0个赞

假设您添加的 json 的值存在格式问题 "minicart_content" ,下面应该会有所帮助 -


package main


import (

    "fmt"

    "encoding/json"

)


var myjson string = `{

    "messages": "<ul class=\"messages\"><li class=\"success-msg\"><ul><li><span>Item succcessfully added<\/span><\/li><\/ul><\/li><\/ul>",

    "app_cart": "[]",

    "addcartrows": "[{\"productId\":\"1675688\",\"quantity\":1,\"unitPrice\":\"290.00\",\"currency\":\"EUR\",\"sku\":\"P00525485-3\"}]",

    "minicart_content": "<ul class=\"checkout-types minicart\">\n <li > ",

    "cart_qty": "1",

    "added_product_json": "{\"id\":\"1675695\",\"size\":\"40\"}"

}`


type AutoGenerated struct {

    Messages         string `json:"messages"`

    AppCart          string `json:"app_cart"`

    Addcartrows      string `json:"addcartrows"`

    MinicartContent  string `json:"minicart_content"`

    CartQty          string `json:"cart_qty"`

    AddedProductJSON string `json:"added_product_json"`

}


func main() {


    var j AutoGenerated

    if err := json.Unmarshal([]byte(myjson), &j); err != nil {

        fmt.Println(err)

    }

    fmt.Println(j.AddedProductJSON)

}


查看完整回答
反对 回复 2022-07-25
  • 2 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信