11 ms·
From XML to JSON to CBOR
- fjfaase 1y agoThis is a link to just one section of a larger book. The next section compare CBOR with a number of other binary storage format, such as protobuf.
- brookst 1y agoOdd that the XML and JSON sections show examples of the format, but CBOR doesn’t. I’m left with no idea what it looks like, other than “building on JSON’s key/value format”.
- account-5 1y agoI'm assuming, since it's a binary encoded, the textual output would not be something you'd like to look at.
- sam_lowry_ 1y agoPeople look at TCP packets all the time.
- account-5 1y agoIn which format? As a list of 1s and 0s; in hex? TCP or IP if I just pasted the textual version of any binary data id captured without some form of conversion it's not good to look at. Especially if it's not accompanied by the encoding schema so you can actually make sense of it.
- brookst 1y agoThe encoding schema are also present for XML and JSON, but not CBOR, so yes, that’s another gap if the book is intended for a technical audience.
- brookst 1y agoWhy? I’m comfortable reading 0x48 0x65 0x78 0x61 0x64 0x65 0x63 0x69 0x6D 0x61 0x6C
- 8n4vidtmkvmk 1y agoWith a table explaining what the byte codes mean? Absolutely I want to see that.
- cbm-vic-20 1y agoThere's an example in the "Putting it Together" section, showing JSON, a "human readable" representation of CBOR, and the hexidecimal bytes of CBOR. https://cborbook.com/part_1/practical_introduction_to_cbor.html#putting-it-together-a-nested-example https://cborbook.com/part_1/practical_introduction_to_cbor.h...
- zbendefy 1y agoHow different is CBOR compared to BSON? Both seem to be binary json-like representations. Edit: BSON seems to contain more data types than JSON, and as such it is more complex, whereas CBOR doesn't add to JSON's existing structure.
- EdSchouten 1y agoThat's not entirely true: with CBOR you can add custom data types through custom tags. A central registry of them is here: https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml This is, for example, used by IPLD (https://ipld.io https://ipld.io) to express references between objects through native types (https://github.com/ipld/cid-cbor/ https://github.com/ipld/cid-cbor/).
- maxbond 1y agoI think parsing BSON is simpler than parsing JSON, BSON has additional types but the top level is always a document. Whereas the following are all valid JSON: - `null` - `"hello"` - `[1,2,NaN]` Additionally, BSON will just tell you what the type of a field is. JSON requires inferring it.
- zokier 1y agoNaN is not part of JSON by any spec. Top level scalar values were disallowed by RFC 4627.
- maxbond 1y agoFair enough. I'm not sure how much JSON parsers in the wild care about that spec. I just tried with Python and it was happy to accept scalars and NaN. JavaScript rejected NaN but was happy to accept a scalar. But sure, compliant parsers can disregard those cases.
- mrbluecoat 1y agoFeels like a CBOR ad to me. I agree that most techs are familiar with XML and JSON, but calling CBOR a "pivotal data format" is a stretch compared to Protobuf, Parquet, Avro, Cap'n Proto, and many others: https://en.m.wikipedia.org/wiki/Comparison_of_data-serialization_formats https://en.m.wikipedia.org/wiki/Comparison_of_data-serializa...
- ognyankulev 1y agoThe fact that the long article misses to make the historical/continuation link to MessagePack is by itself a red flag signalling a CBOR ad. Edit: OK, actually there is a separate page for alternatives: https://cborbook.com/introduction/cbor_vs_the_other_guys.html https://cborbook.com/introduction/cbor_vs_the_other_guys.htm...
- mikepurvis 1y agoNotably missing is a comparison to Cap'n Proto, which to me feels like the best set of tradeoffs for more binary interchange needs. I honestly wonder sometimes if it's held back by the name— I love the campiness of it, but I feel like it could be a barrier to being taken seriously in some environments.
- kentonv 1y ago> I feel like it could be a barrier to being taken seriously in some environments. Working as intended. ;)
- stronglikedan 1y agoman I love HN lol
- kentonv 1y agoIn all seriousness: I develop Cap'n Proto to serve my own projects that use it, such at the Cloudflare Workers runtime. It is actually not my goal to see Cap'n Proto itself adopted widely. I mean, don't get me wrong, it'd be cool, but it isn't really a net benefit to me personally: maybe people will contribute useful features, but mostly they will probably just want me to review their PRs adding features I don't care about, or worse, demand I fix things I don't care about, and that's just unpaid labor for me. So mostly I'm happy with them not. It's entirely possible that this will change in the future: like maybe we'll decide that Cap'n Proto should be a public-facing part of the Cloudflare Workers platform (rather than just an implementation detail, as it is today), in which case adoption would then benefit Workers and thus me. At the moment, though, that's not the plan. In any case, if there's some company that fancies themselves Too Serious to use a technology with such a silly name and web site, I am perfectly happy for them to not use it! :)
- deafpolygon 1y ago[flagged]
- djrenren 1y agoCBOR isn't a hobby spec. It's integral to the WebAuthn API spec. Every time someone uses a passkey, CBOR is used to exchange messages with the authenticator
- 0x006A 1y agowhy was CBOR used for WebAuthn and was that a good idea?
- qcnguy 1y agoBecause given the same input data structure every correct implementation generates exactly the same byte sequence, so it's useful for signing. This isn't true of many other data formats, including JSON and protocol buffers.
- otabdeveloper4 1y agoCBOR is just MessagePack with an international standard. International standards are good.
- naikrovek 1y agopeople are just straight up afraid to write their own binary formats, aren't they. it's not hard, it's exactly like creating your own text format but you write binary data instead of text, and you can't read it with your eyes right away (but you can after you've looked at enough of it.) there is nothing to fear or to even worry about; just try it. look up how things like TLV work on wikipedia. you can do just about anything you would ever need with plain binary TLV and it's gonna perform like you wouldn't believe. https://en.wikipedia.org/wiki/Type%E2%80%93length%E2%80%93value https://en.wikipedia.org/wiki/Type%E2%80%93length%E2%80%93va... binary formats are always going to be 1-2 orders of magnitude faster than plain text formats, no matter which plain text format you're using. writing a viewer so you can easily read the data isn't zero-effort like it is for JSON or XML where any existing text editor will do, but it's not exactly hard, either. your binary format reading code is the core of what that viewer would be. once you write and use your own binary format, existing binary formats you come across become a lot less opaque, and it starts to feel like you're developing a mild superpower.
- hvb2 1y agoI assume you mean as an exercise? Not for actual use in any production system? If you did mean for production use, I assume you also implement your own encryption, encoding schemes and everything else?
- naikrovek 1y agoi write my own binary formats because they're fast and small. yes, in production. partly because it's just as easy as anything else for me now, partly because it doesn't require any dependencies at all, and partly to show others just how easy it is, because i think people are unnecessarily afraid of this. no i don't write my own encoding or encryption. why the hell would anyone use json for everything, and why would someone who doesn't do that earn your derision?
- hvb2 1y agoI didn't say anywhere that we should use json for everything. I think most people would go with something standard and documented. If you work in a team it helps if you can hire people that are familiar with tech or can read up on it easily. And in general, unless you can show that your formatter is an actual hot path in need of optimization, you've just added another piece of code in need of care and feeding for no real gain. Most devs/applications are fine with protobuf or even Json performance. And solving that problem is not something they can or should do. If you write something like that just to prove a point, good for you. Also I would never want to be on the same team
- darthrupert 1y agoCBOR has always seemed to me like the most promising data format for efficient data transfer. Somewhat weird how little use it has.
- otterley 1y agoAWS is beginning to support it, starting with certain data-heavy APIs: https://aws.amazon.com/about-aws/whats-new/2025/07/amazon-cloudwatch-sdk-optimized-json-cbor-protocols-in-preview https://aws.amazon.com/about-aws/whats-new/2025/07/amazon-cl...
- lihaciudaniel 1y ago[flagged]
- nabla9 1y agoCBOR is when you need option for very small code size. If you can always use compression, CBOR provides no significant data size improvement over JSON. With small code size it beats also BSON, EBML and others.
- surajrmal 1y agoOr compute. Compression isn't free, especially on power constrained devices. At scale power and compute also have real cost implications. Most data centers have long been using binary encoding formats such as protobuf to save on compute and network bandwidth. cbor is nice because it's self describing so you can still understand it without a schema, which is a nice property people like about json.
- 8n4vidtmkvmk 1y agoDoesn't capn proto win hands down on compute? I haven't used it, but I thought that was the big claim.
- kentonv 1y agoNot necessarily. Cap'n Proto serialization can be a huge win in terms of compute if you are communicating using shared memory or reading huge mmaped files, especially if the reader only cares to read some random subset of the message but not the whole thing. But in the common use case of sending messages over a network, Cap'n Proto probably isn't a huge difference. Pushing the message through a socket is still O(n), and the benefits of compression might outweigh the CPU cost. (Though at least with Cap'n Proto, you have the option to skip compression. Most formats have some amount of compression baked into the serialization itself.) Note that benchmarks vary wildly depending on the use case and the type of data being sent, so it's not really possible to say "Well it's N% faster"... it really depends. Sometimes Protobuf wins! You have to test your use case. But most people don't have time to build their code both ways to compare. I actually think Cap'n Proto's biggest wins are in the RPC system, not the serialization. But these wins are much harder to explain, because it's not about speed, but instead expressiveness. It's really hard to understand the benefits of using a more expressive language until you've really tried it. (I'm the author of Cap'n Proto.)
- gethly 1y agoI wish browsers would support CBOR natively so I could just return CBOR instead of JSON(++speed --size ==win) and not have to be concerned with decoding it or not being able to debug requests in dev console.
- dylan604 1y agoJSON + compression (++speed --size ==win) your server can do this natively for live data. your browser can decompress natively. and ++human-readable. if you're one of those that doesn't want the user to read the data, then maybe CBOR is attractive??? but why would you send data down the wire that you don't want the user to see? isn't the point of sending the data to the client is so the client can display that data?
- 8n4vidtmkvmk 1y agoIt's still not attractive to hide data from the user. Unless it's encrypted, the user can read it.
- dylan604 1y agoi think i'm using a different meaning of "seeing". to the user, it won't be plain text that is human readable. unencrypted CBOR byte data might as well be encrypted to the end user.
- gethly 1y agoThat is true. Basic content encoding works very well with json but that still means there is the compression step, which would not be necessary with CBOR as it is already a binary payload. It would allow faster response and delivery times natively. Of course, we are talking few ms, but I say why leave those ms on the floor? I guess i'm just shouting at the clouds :D
- makapuf 1y agoASN.1 while complex has really seems to be a step up from those (even if older) in terms of terseness (as binary encoding) and generality.
- jabl 1y agoYes, but that comes from the telecom world. Hence thanks to NIH, that wheel must be reinvented.
- nly 1y agoThe FOSS tooling for it sucks balls. That's why
- zzo38computer 1y agoThen, work to make a better one. (I had written a C library to read/write DER format, although it does not deal with the schema.)
- eadmund 1y agoWould you rather write a parser for this: SEQUENCE { SEQUENCE { OBJECT IDENTIFIER '1 2 840 113549 1 1 1' NULL } BIT STRING 0 unused bits, encapsulates { SEQUENCE { INTEGER 00 EB 11 E7 B4 46 2E 09 BB 3F 90 7E 25 98 BA 2F C4 F5 41 92 5D AB BF D8 FF 0B 8E 74 C3 F1 5E 14 9E 7F B6 14 06 55 18 4D E4 2F 6D DB CD EA 14 2D 8B F8 3D E9 5E 07 78 1F 98 98 83 24 E2 94 DC DB 39 2F 82 89 01 45 07 8C 5C 03 79 BB 74 34 FF AC 04 AD 15 29 E4 C0 4C BD 98 AF F4 B7 6D 3F F1 87 2F B5 C6 D8 F8 46 47 55 ED F5 71 4E 7E 7A 2D BE 2E 75 49 F0 BB 12 B8 57 96 F9 3D D3 8A 8F FF 97 73 INTEGER 65537 } } } or this: (public-key (rsa (e 65537) (n 165071726774300746220448927123206364028774814791758998398858897954156302007761692873754545479643969345816518330759318956949640997453881810518810470402537189804357876129675511237354284731082047260695951082386841026898616038200651610616199959087780217655249147161066729973643243611871694748249209548180369151859))) I know that I’d prefer the latter. Yes, we could debate whether the big integer should be a Base64-encoded binary integer or not, but regardless writing a parser for the former is significantly more work. And let’s not even get started with DER/BER/PEM and all that insanity. Just give me text!
- kookamamie 1y agoThe article reads like a semi-slop with its numerous lists and overly long explanations of obvious things, such as how XML came to be.
- Jean-Papoulos 1y agoObligatory https://xkcd.com/927/ https://xkcd.com/927/
- glenjamin 1y agoThe only mention I can see in this document of compression is > Significantly smaller than JSON without complex compression Although compression of JSON could be considered complex, it's also extremely simple in that it's widely used and usually performed in a distinct step - often transparently to a user. Gzip, and increasingly zstd are widely used. I'd be interested to see a comparison between compressed JSON and CBOR, I'm quite surprised that this hasn't been included.
- dylan604 1y ago> I'm quite surprised that this hasn't been included. Why? That goes against the narrative of promoting one over the other. Nissan doesn't advertise that a Toyota has something they don't. They just pretend it doesn't exist.
- JimDabell 1y agoPreviously: CBOR – Concise Binary Object Representation - https://news.ycombinator.com/item?id=20603378 https://news.ycombinator.com/item?id=20603378 - Aug 2019 (71 comments) Begrudgingly Choosing CBOR over MessagePack - https://news.ycombinator.com/item?id=43229259 https://news.ycombinator.com/item?id=43229259 - Mar 2025 (78 comments)
- _the_inflator 1y agoLove or hate JSON, the beauty and utility stem from the fact that you have only the fundamental datatypes as a requirement, and that's it. Structured data that, by nesting, pleases the human eye, reduced to the max in a key-value fashion, pure minimalism. And while you have to write type converters all the time for datetime, BLOBs etc., these converters are the real reasons why JSON is so useful: every OS or framework provides the heavy lifting for it. So any elaborated new silver bullet would require solving the converter/mapper problem, which it can't. And you can complain or explain with JSON: "Comments not a feature?! WTF!" - Add a field with the key "comment" Some smart guys went the extra mile and nevertheless demanded more, because wouldn't it be nice to have some sort of "strict JSON"? JSON schema was born. And here you can visibly experience the inner conflict of "on the one hand" vs "on the other hand". Applying schemas to JSON is a good cause and reasonable, but guess what happens to JSON? It looks like unreadable bloat, which means XML. Extensibility is fine, basic operations appeal to both demands, simple and sophisticated, and don't impose the sophistication on you just for a simple 3-field exchange about dog food preferences.
- sevensor 1y agoMy complaint about JSON is that it’s not minimal enough. The receiver always has to validate anyway, so what has syntax typing done for us? Different implementations of JSON disagree about what constitutes a valid value. For instance, is {“x”: NaN} valid JSON? How about 9007199254740993? Or -.053? If so, will that text round trip through your JSON library without loss of precision? Is that desirable if it does? Basically I think formats with syntax typed primitives always run into this problem: even if the encoder and decoder are consistent with each other about what the values are, the receiver still has to decide whether it can use the result. This after all is the main benefit of a library like Pydantic. But if we’re doing all this work to make sure the object is correct, we know what the value types are supposed to be on the receiving end, so why are we making a needlessly complex decoder guess for us?
- aidenn0 1y agoNaN is not a valid value in JSON. Neither are 0123 or .123 (there must always be at least one digit before the decimal marker, but extraneous leading zeroes are disallowed). JSON was originally parsed in javascript with eval() which allowed many things that aren't JSON through, but that doesn't make JSON more complex.
- camgunz 1y agoOh good, another CBOR thread. Disclaimer: I wrote and maintain a MessagePack implementation. I've also bird dogged this for a while, HN search me. Mostly, I just want to offer a gentle critique of this book's comparison with MessagePack [0]. > Encoding Details: CBOR supports indefinite-length arrays and maps (beneficial for streaming when total size is unknown), while MessagePack typically requires fixed collection counts. This refers to CBOR's indefinite length types, but awkwardly, streaming is a protocol level feature, not a data format level feature. As a result, there's many better options, ranging from "use HTTP" to "simply send more than 1 message". Crucially, CBOR provides no facility for re-syncing a stream in the event of an error, whether that's network or simply a bad encoding. "More features" is not necessarily better. > Standardization: CBOR is a formal IETF standard (RFC 8949) developed through consensus, whereas MessagePack uses a community-maintained specification. Many view CBOR as a more rigorous standard inspired by MessagePack. Well, CBOR is MessagePack. Carsten Bormann forked MessagePack, changed some of the tag values, wrote a standard around it, and submitted it to the IETF against the wishes of MessagePack's creators. > Extensibility: CBOR employs a standardized semantic tag system with an IANA registry for extended types (dates, URIs, bignums). MessagePack uses a simpler but less structured ext type where applications define tag meanings. Warning: I have a big rant about the tag registry. The facilities are the same (well, the tag is 8 bytes instead of 1 byte, but w/e); it's TLV all the way down (Bormann ripped this also). Bormann's contribution is the registry, which is bonkers [1]. There's... dozens of extensions there? Hundreds? No CBOR implementation supports anywhere near all this stuff. "Universal Geographical Area Description (GAD) description of velocity"? "ur:request, Transaction Request identifier"? The registry isn't useful. Here are the possible scenarios: If something is in high demand and has good support across platforms, then it's a no-brainer to reserve a tag. MP does this with timestamps. If something is in high demand, but doesn't have good support across platforms, then you're putting extra burden on those platforms. Ex: it's not great if my tiny microcontroller now has to support bignums or 128-bit UUIDs. Maybe you do that, or you make them optional, but that leads us to... If something isn't in high demand or can't easily be supported across platforms, but you want support for it anyway, there's no need to tell anyone else you're using that thing. You can just use it. That's MP's ext types. CBOR seems to imagine that there's a hypothetical general purpose decoder out there that you can point to any CBOR API, but there isn't and there never will be. Nothing will support both "Used to mark pointers in PSA Crypto API IPC implementation" and "PlatformV_HAS_PROPERTY" (I just cannot get over this stuff). There is no world where you tell the IETF about your tags, define an API with them, and someone completely independently builds a decoder for them. It will always be a person who cares about your specific tags, in which case, why not just agree on the ext types ahead of time? A COSE decoder doesn't need also need to decode a "RAINS Message". > Performance and Size: Comparisons vary by implementation and data. CBOR prioritizes small codec size (for constrained devices) alongside message compactness, while MessagePack focuses primarily on message size and speed. I can't say I fully understand what this means, but CBOR and MP are equivalent here, because CBOR is MP. > Conceptual Simplicity: MessagePack's shorter specification appears simpler, but CBOR's unification of types under its major type/additional info system and tag mechanism offers conceptual clarity. Even if there's some subjectivity around "conceptual simplicity/clarity", again CBOR and MP are equivalent here because they're functionally the same format. --- I have some notes about the blurb above too: > MessagePack delivers greater efficiency than JSON I think it's probably true that the fastest JSON encoders/decoders are faster than the fastest MP encoders/decoders. Not that JSON performance has a higher ceiling, but it's got gazillions of engineering hours poured into it, and rightly so. JSON is also usually compressed, so space benefits only matter at the perimeters. I'm not saying there's no case for MP/CBOR/etc., just that the efficienty/etc. gap is a lot smaller than one would predict. > However, MessagePack sacrifices human-readability This, of course, applies to CBOR as well. > ext mechanism provides less structure than CBOR's IANA-registered tags Again the mechanism is the same, only the registry is different. [0]: https://cborbook.com/introduction/cbor_vs_the_other_guys.html#comparison-vs-cbor-2 https://cborbook.com/introduction/cbor_vs_the_other_guys.htm... [1]: https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml
- johnisgood 1y agoErlang / Elixir has amazing support for ASN.1! I love it. https://www.erlang.org/doc/apps/asn1/asn1_getting_started.html https://www.erlang.org/doc/apps/asn1/asn1_getting_started.ht... https://www2.erlang.org/documentation/doc-14/lib/asn1-5.1/doc/pdf/asn1-5.1.pdf https://www2.erlang.org/documentation/doc-14/lib/asn1-5.1/do... (https://www2.erlang.org/documentation/doc-14/lib/asn1-5.1/doc/html/users_guide.html https://www2.erlang.org/documentation/doc-14/lib/asn1-5.1/do...) I am using ASN.1 to communicate between a client (Java / Kotlin) and server (Erlang / Elixir), but unfortunately Java / Kotlin has somewhat of a shitty support for ASN.1 in comparison to Erlang.
- ghishadow 1y agoErlang and ASN.1 are from telecom, so it makes sense they have best support
- johnisgood 1y agoI agree, but that does not mean that other languages should have shitty support. It does not mean that it should not either, of course.
- zzo38computer 1y agoI also use ASN.1 but I use C, so I wrote my own implementation of DER.
- johnisgood 1y agoDoes it support constraints?
- zzo38computer 1y agoIt is a C library, and does not implement ASN.1 schema at all, only implements reading/writing the data. The caller is expected to implement most constraints that would be required, although you can limit the size of data being read, and the functions for decoding integers will automatically check that the type is correct (although you can disable type checking) and will limit the values to those that fit in the variable that the decoded value is stored in (e.g. signed 64-bits, unsigned 8-bits, etc), and other functions that decode specific values will also normally check the type (although you can tell it to not check the type).
- aidenn0 1y agoI admit I got nerd-sniped here, but the table for floats[1] suggests that 10000.0 be represented as a float32. However, isn't it exactly representable as 0x70e2 in float16[2]? There are only 10 significant bits to the mantissa (including the implicit 1), while float16 has 11 so there's even an extra bit to spare. 1: https://cborbook.com/part_1/practical_introduction_to_cbor.html#preferred-serialization-for-floating-point-numbers https://cborbook.com/part_1/practical_introduction_to_cbor.h... 2: i.e. 1.220703125×2¹³
- aidenn0 1y agoLooks like it's a typo; they state: > 0x47c35000 encodes 10000.0 But by my math that encodes 100000.0 (note the extra zero).
- dang 1y agoRelated. Others? Begrudgingly Choosing CBOR over MessagePack - https://news.ycombinator.com/item?id=43229259 https://news.ycombinator.com/item?id=43229259 - March 2025 (78 comments) MessagePack vs. CBOR (RFC7049) - https://news.ycombinator.com/item?id=23838565 https://news.ycombinator.com/item?id=23838565 - July 2020 (2 comments) CBOR – Concise Binary Object Representation - https://news.ycombinator.com/item?id=20603378 https://news.ycombinator.com/item?id=20603378 - Aug 2019 (71 comments) CBOR – Concise Binary Object Representation - https://news.ycombinator.com/item?id=10995726 https://news.ycombinator.com/item?id=10995726 - Jan 2016 (36 comments) Libcbor – CBOR implementation for C and others - https://news.ycombinator.com/item?id=9597198 https://news.ycombinator.com/item?id=9597198 - May 2015 (5 comments) CBOR – A new object encoding format - https://news.ycombinator.com/item?id=6932089 https://news.ycombinator.com/item?id=6932089 - Dec 2013 (9 comments) RFC 7049 - Concise Binary Object Representation (CBOR) - https://news.ycombinator.com/item?id=6632576 https://news.ycombinator.com/item?id=6632576 - Oct 2013 (52 comments)
- JoelJacobson 1y agoFun fact: CBOR is used within the WebAuthn (Passkey) protocol. To do Passkey-verification server-side, I had to implement a pure-SQL/PLpgSQL CBOR parser, out of fear that a C-implementation could crash the PostgreSQL server: https://github.com/truthly/pg-cbor https://github.com/truthly/pg-cbor
- teatro 1y agoThat’s why I’m wondering if there is an actual CBOR encoder in the browsers? I mean, there must be one, or am I wrong?
- esbranson 1y agoYes.[1][2] [1] https://source.chromium.org/chromium/chromium/src/+/main:components/cbor/ https://source.chromium.org/chromium/chromium/src/+/main:com... [2] https://source.chromium.org/chromium/chromium/src/+/main:device/fido/ https://source.chromium.org/chromium/chromium/src/+/main:dev...
- esbranson 1y agoAnd .Net 5 circa 2020 added support for CBOR. ASP.NET ended up being a good choice for an experimental WebAuthn server for FedCM and DID experiments.
- naggumsghost 1y agoIf GML was an infant, SGML is the bright youngster far exceeds expectations and made its parents too proud, but XML is the drug-addicted gang member who had committed his first murder before he had sex, which was rape. https://www.schnada.de/grapt/eriknaggum-xmlrant.html https://www.schnada.de/grapt/eriknaggum-xmlrant.html We're going to have to think up something worse for CBOR.
- lofaszvanitt 1y agoYeah, CBOR is very good, but you will only understand after you digest 100000 words about it :D.
- zzo38computer 1y agoI prefer DER, which is also a binary format so it has the advantages of binary formats, too. (There is also BER, but in my opinion, DER is better.) I use DER in some programs, if the structured data format is useful. (Also, since text format is sometimes useful too, I had made up TER which is intended to be converted to DER. The DER file can be made in other ways as well and it is not required to use TER.) (Also, standard ASN.1 does not have a key/value list type (which JSON and CBOR do have), but I had made up some nonstandard extensions to ASN.1 (called ASN.1X), including a few additional types, one of which is the key/value list type. Due to this, ASN.1X can now make a superset of the data that can be made by JSON (the only new type that is needed for this is the key/value list type; the other types of JSON are already standard ASN.1 types).)