Giter Site home page Giter Site logo

Comments (8)

MartinDelVecchio avatar MartinDelVecchio commented on May 19, 2024 5

That would be awesome for me. And based on my week of searching for "golang ordered map JSON marshal unmarshal", I think it would be awesome for a lot of other people as well.

Thank you!

from gods.

spewspews avatar spewspews commented on May 19, 2024 1

In short: no. If you use a comparator that orders by insertion time then you would have to look up by insertion time as well.

I would use a slice or a doubly linked list to store the items ordered by insertion in a queue-like fashion. You could then use a map to to store indices into the slice or a pointer to the linked list node. You can then do constant time lookup and in the case of the linked list constant time removal. You iterate through the slice or linked list to get an insertion ordered loop.

from gods.

MartinDelVecchio avatar MartinDelVecchio commented on May 19, 2024

My problem is that I don't do the insertions; json.Unmarshal() does. As currently written, the struct it unmarshals into uses a map[string]interface{}, which is ordered. So I need to replace that with a type that 1) supports json.Unmarshal() (and json.Marshal() ) transparently, and 2) maintains insertion order.

I see that the gods map types fully support the JSON interface, so that seems promising. I was hoping that one already spuported maintaining the insertion order, but that does not appear to be the case. I will take a look at the source to see how difficult it would be to adapt HashMap to do this.

Thanks.

from gods.

emirpasic avatar emirpasic commented on May 19, 2024

@MartinDelVecchio

As @spewspews mentioned, that structure hasn't yet been implemented and I think it would be a nice addition to GoDS. It's fairly easy to implement and, once implemented, the JSON serialization/deserialization would be in that (insertion) order.

I hope to have it ready this weekend, i.e. LinkedHashMap and LinkedHashSet that maintain the insertion order.

from gods.

MartinDelVecchio avatar MartinDelVecchio commented on May 19, 2024

Have you made any progress on this? I'd love to try out anything that you have.

Thanks again!

from gods.

chrischris292 avatar chrischris292 commented on May 19, 2024

any progress?

from gods.

emirpasic avatar emirpasic commented on May 19, 2024

@chrischris292 unfortunately not, i'm time-limited due to recent fatherhood. i have to take a day or two one of these weekends to clean up pull requests and implement requested features.

from gods.

emirpasic avatar emirpasic commented on May 19, 2024

@MartinDelVecchio @chrischris292 sorry it took so long, but I finally found some time for this

Map data structure preserving the insertion-order.
LinkedHashMap

Set data structure preserving the insertion-order.
LinkedHashSet

from gods.

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.