Giter Club home page Giter Club logo

Comments (4)

goccy avatar goccy commented on May 14, 2024 1

@timgws

I fixed with #72 and released as v1.2.0 !
If you like this library, I'd be happy if you could promote this around .

Thanks

from go-yaml.

goccy avatar goccy commented on May 14, 2024 1

@timgws

The above code is wrong, it does not work .
( HostList and Host definition is wrong )

The following code works fine .

package main

import (
	"github.com/goccy/go-yaml"
)

type Host struct {
	Hostname string
	Username string
	Password string
}

type HostList struct {
	Host *Host `yaml:",anchor"`
}

type Queue struct {
	Name  string `yaml:","`
	*Host `yaml:",alias"`
}

type ConfigFile struct {
	HostList []*HostList `yaml:"hosts"`
	Queues   []*Queue    `yaml:"queues"`
}

func main() {
	yml := `
hosts:
  - host: &host1
      hostname: queue.example.com
      username: queue1
      password: queue1
      port: 5672

  - host: &host2
      hostname: queue2.example.com
      username: queue2
      password: queue2
      port: 5672

queues:
  - name: queue
    host: *host1
  - name: queue2
    host: *host1
  - name: queue3
    host: *host2
`

	var cf ConfigFile
	if err := yaml.Unmarshal([]byte(yml), &cf); err != nil {
		panic(err)
	}
	cf.Queues[0].Host.Hostname = "updated"
}

from go-yaml.

timgws avatar timgws commented on May 14, 2024 1

Ah! It happened when HostList had inline inside the Host yaml parameters.

Thanks so much for all your help here @goccy

I will try over the next couple of days to get goccy/go-yaml to marshel files in the same format that was unmarshaled.

Words can't explain how much I appreciate the last two commits :)

from go-yaml.

timgws avatar timgws commented on May 14, 2024

I fixed with #72 and released as v1.2.0 !

I just tested this with the above code, and it does not work. Configuration.HostList[0] and Configuration.HostList[1] are both empty.

The Actual output remains the same as the previous commit.

from go-yaml.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.