代码之家  ›  专栏  ›  技术社区  ›  Richard Knife

go中ASCII到Json

  •  -2
  • Richard Knife  · 技术社区  · 7 年前

    我对编程有点陌生,但我发现python没有我需要的速度,所以我切换到go,我构建了一个刮刀,我需要将一个看起来像ASCII格式的字符串转换为json,但我找不到任何关于如何在go中实现这一点的好文档。

    我需要转换的字符串如下所示:调试%22%3Afalse%2C%22pageOpts%22%3A%7B%22noBidIfUnsold%22%3Atrue%2C%22keywords%22%3A%7B%22no-sno-finn-object\u类型%22%3A%22private%22%2C%22no-sno-finn-car\u make%22%3A%22796%2C%22aa-sch publisher%22%3A%22finn%22%2C%22aa-sch-inventory\u类型%22%3A%22%2C%22aa-sch-country\u代码%22%3A%22no%22%2C%22no sno-finn段%22%3A%22car%22%2C%22no-sno-finn-ad_所有者%22%3A%22false%22%2C%22no sno publishergroup%22%3A%22schibsted%22%2C%22aa-sch-supply\u type%22%3A%22web\u desktop%22%2C%22no sno-finn subsection%22%3A%22car\u used%22%2C%22aa-sch-page\u type%22%3A%22object%22%7D

    提前感谢!

    1 回复  |  直到 7 年前
        1
  •  2
  •   maerics    7 年前

    正如评论员所提到的,您的字符串是URL编码的,可以使用 url.QueryUnescape(...) :

    package main
    
    import (
      "fmt"
      "net/url"
    )
    
    func main() {
      querystr := "debug%22%3Afalse%2C%22pageOpts%22%3A%7B%22noBidIfUnsold%22%3Atrue%2C%22keywords%22%3A%7B%22no-sno-finn-object_type%22%3A%22private%22%2C%22no-sno-finn-car_make%22%3A%22796%22%2C%22aa-sch-publisher%22%3A%22finn%22%2C%22aa-sch-inventory_type%22%3A%22classified%22%2C%22aa-sch-country_code%22%3A%22no%22%2C%22no-sno-finn-section%22%3A%22car%22%2C%22no-sno-finn-ad_owner%22%3A%22false%22%2C%22no-sno-publishergroup%22%3A%22schibsted%22%2C%22aa-sch-supply_type%22%3A%22web_desktop%22%2C%22no-sno-finn-subsection%22%3A%22car_used%22%2C%22aa-sch-page_type%22%3A%22object%22%7D"
    
      // Parse the URL encoded string.
      plainstr, err := url.QueryUnescape(querystr)
      if err != nil {
        panic(err)
      }
      fmt.Println(plainstr)
      // debug":false,"pageOpts":{"noBidIfUnsold":true,"keywords":{"no-sno-finn-object_type":"private","no-sno-finn-car_make":"796","aa-sch-publisher":"finn","aa-sch-inventory_type":"classified","aa-sch-country_code":"no","no-sno-finn-section":"car","no-sno-finn-ad_owner":"false","no-sno-publishergroup":"schibsted","aa-sch-supply_type":"web_desktop","no-sno-finn-subsection":"car_used","aa-sch-page_type":"object"}
    
    }
    

    示例字符串似乎不完整,但最终可以使用 json.Unmarshal(...) .