douyan8961 2015-02-09 06:15
浏览 1021

如何在Golang Yaml解析器中保留空格和换行符?

I want something like

Some text here,  
    indented text here
    next indented texr here

I tried this yaml style

key: |
    Some text here,
        indented text here
        next indented text here

the above yaml code preserves only the newline but discards the indented spaces. How to preserve those extra spaces?

code I used to parse the yaml file package main

import (
    "os"
    "fmt"
    "github.com/kylelemons/go-gypsy/yaml"
)

func main(){
    map_,err:=Parse()
fmt.Println(map_.Key("Key"),err)
}

func Parse() (yaml.Map, error) {
    file, err := os.Open("testindent.yaml")
        if err != nil {
        return nil, err
    }
    node, err := yaml.Parse(file)
        if err != nil {
            return nil, err
    }
    nodes := node.(yaml.Map)
    return nodes, nil
}

  • 写回答

1条回答 默认 最新

  • doushuo1989 2015-02-09 13:31
    关注

    I am not sure which parser are you using to parse the YAML, but here is a snippet which works pretty good, I used viper.

    testviber.yaml

    invoice: 34843
    date   : 2001-01-23
    abc: |
       There once was a short man from Ealing
       Who got on a bus to Darjeeling
           It said on the door
           "Please don't spit on the floor"
       So he carefully spat on the ceiling
    last_invoice: 34843
    

    testviber.go

    package main
    
    import (
        "fmt"
    
        "github.com/spf13/viper"
    )
    
    func main() {
        viper.SetConfigName("testviber")
        viper.ReadInConfig()
        fmt.Printf("%v", viper.Get("abc"))
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染