golang的json操作[转]

package main

import (

    "encoding/json"

    "fmt"

    "os"

)

type ConfigStruct struct {

    Host              string   `json:"host"`

    Port              int      `json:"port"`

    AnalyticsFile     string   `json:"analytics_file"`

    StaticFileVersion int      `json:"static_file_version"`

    StaticDir         string   `json:"static_dir"`

    TemplatesDir      string   `json:"templates_dir"`

    SerTcpSocketHost  string   `json:"serTcpSocketHost"`

    SerTcpSocketPort  int      `json:"serTcpSocketPort"`

    Fruits            []string `json:"fruits"`

}

type Other struct {

    SerTcpSocketHost string   `json:"serTcpSocketHost"`

    SerTcpSocketPort int      `json:"serTcpSocketPort"`

    Fruits           []string `json:"fruits"`

}

func main() {

    jsonStr := `{"host""http://localhost:9090","port": 9090,"analytics_file""","static_file_version": 1,"static_dir""E:/Project/goTest/src/","templates_dir""E:/Project/goTest/src/templates/","serTcpSocketHost"":12340","serTcpSocketPort": 12340,"fruits": ["apple""peach"]}`

    //json str 转map

    var dat map[string]interface{}

    if err := json.Unmarshal([]byte(jsonStr), &dat); err == nil {

        fmt.Println("==============json str 转map=======================")

        fmt.Println(dat)

        fmt.Println(dat["host"])

    }

    //json str 转struct

    var config ConfigStruct

    if err := json.Unmarshal([]byte(jsonStr), &config); err == nil {

        fmt.Println("================json str 转struct==")

        fmt.Println(config)

        fmt.Println(config.Host)

    }

    //json str 转struct(部份字段)

    var part Other

    if err := json.Unmarshal([]byte(jsonStr), &part); err == nil {

        fmt.Println("================json str 转struct==")

        fmt.Println(part)

        fmt.Println(part.SerTcpSocketPort)

    }

    //struct 到json str

    if b, err := json.Marshal(config); err == nil {

        fmt.Println("================struct 到json str==")

        fmt.Println(string(b))

    }

    //map 到json str

    fmt.Println("================map 到json str=====================")

    enc := json.NewEncoder(os.Stdout)

    enc.Encode(dat)

    //array 到 json str

    arr := []string{"hello""apple""python""golang""base""peach""pear"}

    lang, err := json.Marshal(arr)

    if err == nil {

        fmt.Println("================array 到 json str==")

        fmt.Println(string(lang))

    }

    //json 到 []string

    var wo []string

    if err := json.Unmarshal(lang, &wo); err == nil {

        fmt.Println("================json 到 []string==")

        fmt.Println(wo)

    }

}

from:http://my.oschina.net/golang/blog/210012

时间: 2024-10-10 06:37:30

golang的json操作[转]的相关文章

golang的json操作

package main import ( "encoding/json" "fmt" "os" ) type ConfigStruct struct { Host string `json:"host"` Port int `json:"port"` AnalyticsFile string `json:"analytics_file"` StaticFileVersion int `

使用Json.Net解决MVC中各种json操作

最近收集了几篇文章,用于替换MVC中各种json操作,微软mvc当然用自家的序列化,速度慢不说,还容易出问题,自定义性也太差,比如得特意解决循环引用的问题,比如datetime的序列化格式,比如性能.NewtonSoft.json也就是Json.Net性能虽然不是最好的,但是是比较靠前的,其功能是最强大的,包含各种json操作模式.现在来看看mvc中的替换1, Controller.Json方法这个方法最容易出现循环引用,比如EF查出一个一对多集合想序列化,结果a引用了子表b,b中还引用了a,导

Go_14:GoLang中 json、map、struct 之间的相互转化

1. golang 中 json 转 struct <1. 使用 json.Unmarshal 时,结构体的每一项必须是导出项(import field).也就是说结构体的 key 对应的首字母必须为大写.请看下面的例子: package commontest import ( "testing" "encoding/json" ) type Person struct { name string age int } func TestStruct2Json(

公共的Json操作类

using System; using System.Data; using System.Text; using System.Collections.Generic; using System.Reflection; using System.Data.Common; using System.Collections; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.IO; usi

ASP.NET 里的 JSON操作

最近项目中需要用到 JSON操作,google了一下 找到了几个比较好的操作方法.... 一 .使用 mircosoft 提供的 .NET Framework 自带的 json操作方法 1. 使用JavaScriptSerializer,位于命名空间System.Web.Script.Serialization,使用如下: 序列化为JSON字符串: C#代码 User user = new User {Name = "jquery", Age = 20};JavaScriptSeria

PHP JSON 操作总结

原文:PHP JSON 操作总结 由于JSON可以在很多种程序语言中使用,所以我们可以用来做小型数据中转,如:PHP输出JSON字符串供JavaScript使用等.在PHP中可以使用 json_decode() 由一串规范的字符串解析出 JSON对象,使用 json_encode() 由JSON 对象生成一串规范的字符串. 例:<?php $json = '{"a":1, "b":2, "c":3, "d":4, &qu

json 操作

share_id += 1; //处理json数据 var img_json = []; if ($("#_hidImgList").val() != "") img_json = eval($("#_hidImgList").val()); var returndata = data.result.Data; returndata['share_id'] = share_id; img_json.push(returndata); $(&quo

Json操作(DynamicJson)

Json的简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C.C++.C#.Java.JavaScript.Perl.Python等).这些特性使JSON成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率). 来自百度百科的介绍 Json的优点 数据格式比较简单,易于读写,格式都是压缩

Newtonsoft.Json 操作 JSON 字符串

Newtonsoft.Json介绍 在做开发的时候,很多数据交换都是以json格式传输的.而使用Json的时候,我们很多时候会涉及到几个序列化对象的使用:DataContractJsonSerializer,JavaScriptSerializer 和 Json.NET即Newtonsoft.Json.大多数人都会选择性能以及通用性较好Json.NET,这个不是微软的类库,但是一个开源的世界级的Json操作类库,从下面的性能对比就可以看到它的其中之一的性能优点. 齐全的API介绍,使用方式简单