golang如何修改json文件内容的方法示例

  

使用一个例子说明golang如何访问和修改json文件;主要分三步:

  
      <李>从文件读json串入李   <李>把json串转变成golang对象李   <李>遍历或者修改json值   <李>写回文件   
  

假定用户输入json串为:

        {   "用户":{   “mspid”:“管理”,   “电子邮件”:“admin@domain.com”   },   “节点”:[   {   “名称”:“node1”,   “位置”:“node1.domain.com: 8080”   },   {   “名称”:“node2”,   “位置”:“node2.domain.com: 8080”   }   ]   }   之前      

我们的目标是把node1和node2域的位置换掉。

  

代码如下

        导入(   “fmt”   “io/ioutil”   “编码/json”   )      func HandleJson错误(jsonFile字符串,输出文件字符串){//从jsonFile读取json缓冲区   byteValue犯错:=ioutil.ReadFile (jsonFile)   如果犯错!=nil {   返回错   }//我们知道外json对象是一个地图,所以我们定义结果地图。//否则,结果可能被定义为片如果外是一个数组   var结果map [string]接口{}   呃=json。Unmarshal (byteValue,及结果)   如果犯错!=nil {   返回错   }//处理同行   节点:=结果(“节点”)。([]接口{})   _,节点:={范围节点   m:=节点。(map [string]接口{})   如果名字,存在:=m(“名字”);存在{   如果名字==皀ode1”{   米(“位置”)=" new-value1 "   其他}如果name==皀ode2”{   米(“位置”)=" new-value2 "   }   }   }//golang对象转换回字节   byteValue呃=json.Marshal(结果)   如果犯错!=nil {   返回错   }//写回文件   呃=ioutil。byteValue WriteFile(输出文件,0644)   返回错   }   之前      

这个地方主要用的是golang{}的接口数据类型,然后把接口{}转换成真正的数据类型。

  

这个函数可以扩充成动态的解析任何类型,只要把所有的类型全部定义成接口{},然后使用动态类型检测就可以知道每一个具体元素的类型了,最终达到类型金桥的功能,访问和修改json文件。

        var x接口{}=?      开关x。(类型){   例零:   fmt。Println (x=nil)   案例int:   fmt。Println (int x)   案例bool:   fmt。Println (“x是bool”)   案例字符串:   fmt。Println (“x是字符串”)   案例[]接口{}:   fmt。Println (x片)   情况下map [string]接口{}:   fmt。Println (“x是地图”)   默认值:   fmt。Println(“类型未知”)   }   }      之前      PS:

<强> 据说json-iteator是目前golang中对json格式数据处理最快的包(比官方json包快6倍),好像是滴滴团队开源的,使用起来也非常方便,有兴趣的可以学习学习、下面我们看看官方的示例代码,使用起来也是很方便

        主要包      进口"github.com/json-iterator/go”      用户类型结构{   名称字符串   年龄int8   }      函数main () {   用户:用户={   名称:“塘沽”,   年龄:18岁   }   var jsoniter=jsoniter.ConfigCompatibleWithStandardLibrary//序列化   数据,犯错:=jsoniter.Marshal(和用户)   如果犯错!=nil {   log.Fatal (err)   }   fmt.Println(字符串(数据))//反序列化   var人用户   呃=jsoniter。Unmarshal(数据,和人)   如果犯错!=nil {   log.Fatal (err)   }   fmt.Println(人)   }      

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
  

golang如何修改json文件内容的方法示例