如何在Windows 10上使用mingw-w 64 g++解析JSON字符串?

fnatzsnv  于 2022-11-26  发布在  Windows
关注(0)|答案(2)|浏览(139)

我正在用mingw-w 64 g在windows上用VS代码写C
我需要能够解析一些JSON字符串。
mingw似乎没有任何内置JSON支持。
在windows 10上的mingw-w 64中设置JSON支持的方法是什么?

68bkxrlz

68bkxrlz1#

有很多库可以用来从C/C ++处理JSON。
举几个例子,我已经能够编译与MinGW-w64:

杰森-C

说明:JSON-C实现了一个引用计数对象模型,允许您轻松地在C中构造JSON对象,将它们输出为JSON格式的字符串,并将JSON格式的字符串解析回JSON对象的C表示形式。
https://github.com/json-c/json-c

利比扬松

说明:Jansson是一个用于编码、解码和操作JSON数据的C库。
http://www.digip.org/jansson/

libjson-glib函数库

说明:JSON-GLib是一个为RFC 4627描述的JavaScript对象表示法(JSON)格式提供序列化和反序列化支持的库。网站URL:http://live.gnome.org/JsonGlib

json解析器

说明:以可移植ANSI C编写的占用空间非常小的JSON解析器
https://github.com/udp/json-parser

jsonh的名字

说明:用于C和C++的json解析器
https://github.com/sheredom/json.h

个jsmn

说明:jsmn(发音像"jasmine")是一个C语言的极简JSON解析器。它可以很容易地集成到资源有限的项目或嵌入式系统中。
http://zserge.com/jsmn.html

小json

说明:tiny-json是一个通用的、易于使用的嵌入式C语言json解析器。它具有快速、健壮和可移植的特点。它不仅仅是一个tokenizer。您可以获得字符串格式的数据或C类型变量中的原语值,而不会损失性能。
https://github.com/rafagafe/tiny-json

ujson4c

说明:基于超快UltraJSON库的C/C ++中用于解码JSON的用户友好层
https://github.com/esnme/ujson4c/

卡津-乔纳皮

说明:CAJUN是一个用于JSON数据交换格式的C++ API,强调直观、简洁的界面。该库提供了JSON类型和操作,在概念和设计上尽可能地模仿标准C++。
https://github.com/cajun-jsonapi/cajun-jsonapi

冷冻

说明:用于C/C ++的JSON解析器和生成器,带有类似scanf/printf的接口。面向嵌入式系统。网站URL:https://github.com/cesanta/frozen

jq

说明:jq是一个轻量级、灵活的命令行JSON处理器。
https://stedolan.github.io/jq/显示器

个js0n

说明:C语言中灵活的零内存占用JSON解析器
https://github.com/quartzjer/js0n

libfastjson函数库

说明:一个快速C语言json库
https://github.com/rsyslog/libfastjson

libxo函数库

说明:libxo库允许应用程序使用一组公共函数调用生成文本、XML、JSON和HTML输出。应用程序在运行时决定应该生成哪种输出样式。
https://github.com/Juniper/libxo

微json

说明:C语言的小JSON解析器,只使用固定范围存储。
http://www.catb.org/esr/microjson/

迷你json读取器

说明:一个不带DOM的JSON解析器,可以解析JSON对象而不分配一个字节的内存
https://github.com/giacomodrago/minijson_reader

迷你jsonwriter

说明:一个简单、开销小、无需分配且可扩展的C++ JSON编写器,直接 Package std::ostream
https://github.com/giacomodrago/minijson_writer

数据包

说明:一个公共域JSON解析器,专注于正确性、ANSI C99兼容性、完整的Unicode(UTF-8)支持、最小的内存占用和简单的API。作为一个流API,任意大的JSON都可以用少量的内存(JSON中最大字符串的大小)来处理。似乎大多数C JSON库都有一些显著的缺点:不完整的字符串支持(如果字符串包含\u0000怎么办?)、不完整的/缺少的Unicode支持,或者蹩脚的软件许可证(GPL或"不作恶")。此库旨在避免这些缺陷。
https://github.com/skeeto/pdjson显示器

皮可松

说明:C++中仅包含标头文件的JSON解析器序列化程序
https://github.com/kazuho/picojson

萨伊森

说明:用于C++11的轻量级、极高性能JSON解析器
https://github.com/chadaustin/sajson显示器

smalljson解析器

说明:这是一个简单的C语言的单文件JSON解析器。它是为资源高度受限的系统设计的。它不使用内存分配,并且可以流式传输数据,因此整个文件不需要驻留在内存中。
https://github.com/DagAgren/SmallJSONParser显示器

单值

说明:C++通用值对象和JSON库
https://github.com/jgarzik/univalue显示器

vmpqdwk3

vmpqdwk32#

按照布雷希特的列表,我尝试了json-parser。下面是我如何使它工作的。希望这能帮助不熟悉这个过程的人
从MinGw G++附带的Msys终端执行此操作,因为它有“make”命令。

cd mycppbase
   git clone https://github.com/json-parser/json-parser.git

   cd json-parser
   export PATH=/c/msys64/mingw64/bin:$PATH
   ./configure
   make

   three files are important
   json.h
   libjsonparser.a
   libjsonparser.so

   cd myexampledir/
   g++ myjson.cpp -o myjson \
    -I "/c/.../mycppbase/json-parser" \
    -L "/c/.../mycppbase/json-parser" \
    -l:libjsonparser.a

更新日期:2022年11月20日
前面的例子是链接一个静态可执行文件。
要动态链接,我们需要将.so文件重命名为.dll文件。(参见下面的注解)
以下是在gitbash终端中完成并工作的。

mv libjsonparser.so libjsonparser.dll
cd myexampledir/
g++ myjson.cpp -o myjson \
        -I "/c/.../mycppbase/json-parser" \
        -L "/c/.../mycppbase/json-parser" \
        -ljsonparser

相关问题