package main

import (
   "github.com/tidwall/gjson"
   "fmt"
   "github.com/beevik/etree"
   "os"
)

const bottleJson = `
{
 "baseResponse": {
  "ret": 0,
  "errMsg": {}
 },
 "bottleType": 0,
 "msgType": 1,
 "bottleInfo": "7s/00Uth+Isrrp2MgTIWi07eUD6jfkN0@bottle:7s/00Uth+IrIfAP6deMtsXXvAAItluU7R0LkGFw1jn0sPCTdIwzOmWWOu+FkJF0o",
 "usrInfo": "\u003cuserinfo signature=\"不属于我的东西,我不要。不是真心给我的东西,我不稀罕。\" sex=\"2\" country=\"CN\" city=\"west\" province=\"Tianjin\" bigheadimgurl=\"http://wx.qlogo.cn/wxplp/ver_1/XHH8acoVbrQpzpia0pzH09ezzWZZr2UXbpsg6VDBhOE5z8YYDibjQ6EtqXysCicQIdicJYPeQIVI6awN7KzStb9NtQryFWR9ia8MxMM0g5tnqSH0/0\" smallheadimgurl=\"http://wx.qlogo.cn/wxplp/ver_1/XHH8acoVbrQpzpia0pzH09ezzWZZr2UXbpsg6VDBhOE5z8YYDibjQ6EtqXysCicQIdicJYPeQIVI6awN7KzStb9NtQryFWR9ia8MxMM0g5tnqSH0/132\" /\u003e",
 "nickName": "翡翠蘑菇",
 "unknow": 3,
 "throwCount": 20,
 "fishCount": 18,
 "distance": 326
}
`
const bottleXml = `
<userinfo signature="不属于我的东西,我不要。不是真心给我的东西,我不稀罕。" sex="2" country="CN" city="west" province="Tianjin" bigheadimgurl="http://wx.qlogo.cn/wxplp/ver_1/XHH8acoVbrQpzpia0pzH09ezzWZZr2UXbpsg6VDBhOE5z8YYDibjQ6EtqXysCicQIdicJYPeQIVI6awN7KzStb9NtQryFWR9ia8MxMM0g5tnqSH0/0" smallheadimgurl="http://wx.qlogo.cn/wxplp/ver_1/XHH8acoVbrQpzpia0pzH09ezzWZZr2UXbpsg6VDBhOE5z8YYDibjQ6EtqXysCicQIdicJYPeQIVI6awN7KzStb9NtQryFWR9ia8MxMM0g5tnqSH0/132"/>
`
func parseJson(content string) {

   baseResponse := gjson.Get(content, "baseResponse")
   bottleInfo := gjson.Get(content, "bottleInfo")
   usrInfo := gjson.Get(content, "usrInfo")

   if baseResponse.Exists() {
      ret := baseResponse.Get("ret").Int()
      errMsg := baseResponse.Get("errMsg").String()
      fmt.Println(ret, errMsg)
   }

   if bottleInfo.Exists() {
      fmt.Println(bottleInfo)
   }

   if usrInfo.Exists() {
      fmt.Println(usrInfo)
   }
}

func parseXML(context string) {
   doc := etree.NewDocument()

   if err := doc.ReadFromString(context); err != nil {
      panic(err)
   }

   root := doc.SelectElement("userinfo")
   if root != nil {
      fmt.Println("Root element:", root.Tag)

      for _, attr := range root.Attr {
         fmt.Printf("  Attr: %s=%s\n", attr.Key, attr.Value)
      }
   }
}

func buildXML() {
   doc := etree.NewDocument()
   doc.CreateProcInst("xml", `version="1.0" encoding="UTF-8"`)
   doc.CreateProcInst("xml-stylesheet", `type="text/xsl" href="style.xsl"`)

   people := doc.CreateElement("People")
   people.CreateComment("These are all known people")

   jon := people.CreateElement("Person")
   jon.CreateAttr("name", "Jon")

   sally := people.CreateElement("Person")
   sally.CreateAttr("name", "Sally")

   doc.Indent(2)
   doc.WriteTo(os.Stdout)
}

func main() {
   parseJson(bottleJson)
   parseXML(bottleXml)
   buildXML()
}


你可能感兴趣的文章

评论区

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。