关于json解析的问题,求教各位大神

sunsanw · 2017-05-20 13:51:45 · 4017 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2017-05-20 13:51:45 的主题,其中的信息可能已经有所发展或是发生改变。

您好,我刚学golang,有个解析json的问题请教各位,谢谢了,我写了以下代码,s1和s2的值能够得到,但是s3中的p1和p2的值不知如何解析到:

var filterInfoList map[string]interface{}

strFilter := {"s1":"ddd","s2":"ppp","s3":[{"p1":"ok1"},{"p2":"ok2"}]}

err := json.Unmarshal([]byte(strFilter), &filterInfoList)

if err != nil {

fmt.Println("error in translating,", err.Error())

return

}

fmt.Println(filterInfoList["s1"])

fmt.Println(filterInfoList["s2"])

fmt.Println(filterInfoList["s3"])


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4017 次点击  
加入收藏 微博
2 回复  |  直到 2017-05-20 14:43:31
zsounder
zsounder · #1 · 8年之前

两种方式,一种按照你写的,按照map一层层解析,另一种是抽出数据格式,直接解析,下面代码中都有了。

package main

import (
    "fmt"
    "encoding/json"
)

type s3_sub struct{
   P1 string `json:"p1"`
   P2 string `json:"p2"`
}
type ss struct{
    S1 string `json:"s1"`
    S2 string `json:"s2"`
    S3 []*s3_sub `json:"s3"`
}

func main() {

var filterInfoList map[string]interface{}

strFilter :=`{"s1":"ddd","s2":"ppp","s3":[{"p1":"ok1"},{"p2":"ok2"}]}`

err := json.Unmarshal([]byte(strFilter), &filterInfoList)

if err != nil {

fmt.Println("error in translating,", err.Error())

return
}

fmt.Println(filterInfoList["s1"])

fmt.Println(filterInfoList["s2"])

fmt.Println(filterInfoList["s3"])

s3slice := filterInfoList["s3"].([]interface{})
s3slice_idx_0 := s3slice[0].(map[string] interface{})
fmt.Println(s3slice_idx_0["p1"])
s3slice_idx_1 := s3slice[1].(map[string] interface{})
fmt.Println(s3slice_idx_1["p2"])

var ssins ss
err = json.Unmarshal([]byte(strFilter), &ssins)
fmt.Println(ssins.S3[0].P1)
fmt.Println(ssins.S3[1].P2)
}
sunsanw
sunsanw · #2 · 8年之前

非常感谢

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传