recherche: library for JSON parsing
looked at - boost property_tree - boost spirit - JSON-C - JsonCpp - rapidjson - vjson / gason the results where quite obvious: --> rapidjson Rationale: we do not want yet another object system; rapidjson has an SAX-style API (and additionally an DOM API if needed). And it is fast, supports in-situ parsing, extended Unicode support, full JSON support and an exchangable allocator. License is MIT
This commit is contained in:
parent
60b6267eac
commit
decaa143fb
1 changed files with 205 additions and 0 deletions
|
|
@ -2142,6 +2142,211 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1448314834155" ID="ID_1725514536" MODIFIED="1448314977228" POSITION="right" TEXT="Integrate">
|
||||
<node CREATED="1448315011484" ID="ID_867104544" MODIFIED="1448315014471" TEXT="generic">
|
||||
<node CREATED="1448315015107" ID="ID_1900900399" MODIFIED="1448315016511" TEXT="JSON">
|
||||
<node CREATED="1448315031553" ID="ID_1177387568" MODIFIED="1448321655258" TEXT="parser">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1448315067524" FOLDED="true" ID="ID_430746611" MODIFIED="1448321609599" TEXT="Libs">
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1448315070908" ID="ID_1328571674" MODIFIED="1448315073327" TEXT="JSON-C">
|
||||
<node CREATED="1448318526124" ID="ID_737325795" MODIFIED="1448318530232" TEXT="einfach"/>
|
||||
<node CREATED="1448318531644" ID="ID_745699377" MODIFIED="1448318533543" TEXT="robust"/>
|
||||
<node CREATED="1448318534203" ID="ID_1415146809" MODIFIED="1448318535863" TEXT="grottig"/>
|
||||
</node>
|
||||
<node CREATED="1448316910322" ID="ID_677006595" MODIFIED="1448316913669" TEXT="JsonCpp">
|
||||
<node CREATED="1448318540363" ID="ID_269049852" MODIFIED="1448318568235" TEXT="sehr weit verbreitet"/>
|
||||
<node CREATED="1448318569151" ID="ID_239373731" MODIFIED="1448318601522">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
<i>schmerzloses </i>C++ API
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1448318701621" ID="ID_1339095142" MODIFIED="1448318719135" TEXT="unterstützt Builder für Integration in den Parse-Vorgang"/>
|
||||
<node CREATED="1448318726098" ID="ID_1386753436" MODIFIED="1448318736621" TEXT="unterstützt Kommentarte (non-Standard)"/>
|
||||
<node CREATED="1448318671009" ID="ID_1620559470" MODIFIED="1448318691459" TEXT="kann als eine große CPP-Datei eingebunden werden"/>
|
||||
<node CREATED="1448319454226" ID="ID_108762123" MODIFIED="1448319476071">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Performance: guter Schnitt (etw. besser als boost spirit)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1448320352804" ID="ID_1738484079" MODIFIED="1448320354088" TEXT="MIT"/>
|
||||
</node>
|
||||
<node CREATED="1448316923520" ID="ID_1207744350" MODIFIED="1448316938354" TEXT="rapidjson">
|
||||
<node CREATED="1448320356547" ID="ID_18433884" MODIFIED="1448320362967" TEXT="MIT / teils BSD"/>
|
||||
<node CREATED="1448320418619" ID="ID_972456274" MODIFIED="1448320428198" TEXT="gilt als schnell und effizient"/>
|
||||
<node CREATED="1448320428906" ID="ID_279600641" MODIFIED="1448321207817">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
hat ein DOM-API <i>und</i> ein SAX-artiges API
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="ksmiletris"/>
|
||||
</node>
|
||||
<node CREATED="1448320473828" ID="ID_681519615" MODIFIED="1448320508422" TEXT="header-only, self-contained, keine Abhängigkeiten!">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
das heißt: <b>nicht einmal</b> abhängig von der STL
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1448320555049" ID="ID_1836540415" MODIFIED="1448321597617" TEXT="erweiterter Unicode-Support, incl. recoding beim Parsen"/>
|
||||
<node CREATED="1448321567452" ID="ID_933252727" MODIFIED="1448321582600" TEXT="kann auch in-situ parsen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
wie gson
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1448320545523" ID="ID_298176210" MODIFIED="1448320554597" TEXT="vollständig, incl Ersetzungen"/>
|
||||
<node CREATED="1448321598848" ID="ID_1151875949" MODIFIED="1448321606499" TEXT="eigener Block-Allokator, ersetzbar"/>
|
||||
</node>
|
||||
<node CREATED="1448318965627" ID="ID_453761706" MODIFIED="1448319657430" TEXT="vjson / gason">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
vjson war Google Code;
|
||||
</p>
|
||||
<p>
|
||||
nach dem Umzug auf Github heißt es gason
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<node CREATED="1448319925356" ID="ID_1589130421" MODIFIED="1448320242925" TEXT="angeblich ziemlich schnell">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
lt. eigenen Benchmakrs deutlich schneller als rapitjson, welches eigentlich immer als der "schnelle" JSON-Parser gilt.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1448319936915" ID="ID_1093677957" MODIFIED="1448319953316" TEXT="C++, aber ehr C-artiges API"/>
|
||||
<node CREATED="1448319955328" ID="ID_534293846" MODIFIED="1448319962555" TEXT="type-tag, switch-on-type"/>
|
||||
<node CREATED="1448319963711" ID="ID_1858072437" MODIFIED="1448320100768" TEXT="Parser ist destruktiv">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
d.h. das Parsen schreibt den Eingabepuffer um, und Strings bleiben einfach liegen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1448319973830" ID="ID_1495739376" MODIFIED="1448320003901" TEXT="Werte werden in IEEE double NaN geboxt"/>
|
||||
<node CREATED="1448320035173" ID="ID_226864203" MODIFIED="1448320053255" TEXT="eigener Block-Allokator"/>
|
||||
<node CREATED="1448320365290" ID="ID_1044522194" MODIFIED="1448320366526" TEXT="MIT"/>
|
||||
</node>
|
||||
<node CREATED="1448315073819" ID="ID_280907535" MODIFIED="1448315076975" TEXT="boost spirit">
|
||||
<node CREATED="1448316823037" ID="ID_726858418" MODIFIED="1448316825976" TEXT="reiner parser"/>
|
||||
<node CREATED="1448321185310" ID="ID_180554028" MODIFIED="1448321192489" TEXT="kann direkt in Vector parsen"/>
|
||||
<node CREATED="1448316826444" ID="ID_263014084" MODIFIED="1448316840095" TEXT="grammatik via metaprogrmming"/>
|
||||
<node CREATED="1448316840474" ID="ID_1878535070" MODIFIED="1448321141123" TEXT="code bloat, vor allem in Debug-builds">
|
||||
<icon BUILTIN="smily_bad"/>
|
||||
</node>
|
||||
<node CREATED="1448321146283" ID="ID_1257942632" MODIFIED="1448321166341" TEXT="Veröffentlichung undurchsichtig">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
kein Repo auffindbar
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1448315077731" ID="ID_439331220" MODIFIED="1448315088637" TEXT="boost property-tree">
|
||||
<node CREATED="1448316790553" ID="ID_1199102717" MODIFIED="1448316795764" TEXT="einfaches API"/>
|
||||
<node CREATED="1448316796240" ID="ID_1402766358" MODIFIED="1448316803299" TEXT="parst in einen boost::property_tree"/>
|
||||
<node CREATED="1448316803799" ID="ID_534763461" MODIFIED="1448321138090" TEXT="keine Typisierung">
|
||||
<icon BUILTIN="smily_bad"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1448320959060" ID="ID_937046843" MODIFIED="1448321217315" TEXT="Entscheidung">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1448320963067" ID="ID_824752283" MODIFIED="1448321223059" TEXT="rapidjson">
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node CREATED="1448320987776" ID="ID_545245790" MODIFIED="1448321000435" TEXT="Begründung...">
|
||||
<node CREATED="1448321001518" ID="ID_671858484" MODIFIED="1448321049432">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
ich will nicht <i>noch ein</i> Objekt-System
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1448321022444" ID="ID_658035448" MODIFIED="1448321032302" TEXT="das SAX-API ist genau, was ich brauche"/>
|
||||
<node CREATED="1448321063078" ID="ID_923664235" MODIFIED="1448321070185" TEXT="außerdem klein und schmerzlos"/>
|
||||
<node CREATED="1448321614174" ID="ID_1319618589" MODIFIED="1448321630999" TEXT="schönes API, und ist schnell"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1448315063541" ID="ID_430049414" MODIFIED="1448315065344" TEXT="framework">
|
||||
<node CREATED="1448321310054" ID="ID_180974747" MODIFIED="1448321312681" TEXT="Forderungen">
|
||||
<node CREATED="1448321258189" ID="ID_1374008180" MODIFIED="1448321323703" TEXT="diff::Record als Container"/>
|
||||
<node CREATED="1448321329691" ID="ID_982254628" MODIFIED="1448321335478" TEXT="Validierung beim Parsen"/>
|
||||
<node CREATED="1448321280178" ID="ID_1241470226" MODIFIED="1448321328887" TEXT="Erweiterbarkeit auf Objekt-Serialisieierung"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1448314890907" ID="ID_411012156" MODIFIED="1448314929930" POSITION="right" TEXT="Session"/>
|
||||
<node CREATED="1448314932726" ID="ID_669869188" MODIFIED="1448314941137" POSITION="right" TEXT="Render"/>
|
||||
<node BACKGROUND_COLOR="#c9d1da" COLOR="#2d2198" CREATED="1439664045448" HGAP="240" ID="ID_21531707" MODIFIED="1439664212589" POSITION="left" TEXT="Info" VSHIFT="-500">
|
||||
<edge COLOR="#b4a9e3"/>
|
||||
<font NAME="SansSerif" SIZE="16"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue