问题标签 [jsoncpp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4672 浏览

jsoncpp - 将值添加到 JsonCpp 对象/嵌套的 JsonCpp Json:Value 对象

我有一个 JSON 对象说:

这将表示为

现在如果我想在不使用 index 方法的情况下将另一个对象添加到上述对象中,我该怎么做呢?例如:

但避免使用语法

JsonCpp 中是否有任何等价物push_back()(如在 C++ 向量/列表中)?

0 投票
1 回答
929 浏览

c - 尝试链接 jsoncpp 并将其包含在 CUDA 项目中时出错:未定义对“Json::Value::Value(Json::ValueType)”的引用

当我尝试在 .cu 文件中使用 #include "json/json.h" 然后运行 ​​make 时,出现以下错误:

nvcc -o sound main.o process.o -L /usr/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -O3 -arch=sm_20 -Xcompiler -Wall -Xcompiler -Wextra -m64

/usr/local/cuda/bin/crt/link.stub:90:13:警告:'void __cudaRegisterLinkedBinary(const __fatBinC_Wrapper_t*, void (*)(void**), void*)' 已定义但未使用 [-Wunused -功能]

process.o:在函数“count_tracks()”中:

tmpxft_00006061_00000000-3_process.cudafe1.cpp:(.text+0x75): 未定义对“Json::Value::Value(Json::ValueType)”的引用

tmpxft_00006061_00000000-3_process.cudafe1.cpp:(.text+0x7d): undefined reference to `Json::Value::~Value()' collect2: ld returned 1 exit status make: *** [student] Error 1

参考我何时尝试创建 Json::Value。我尝试在链接 JsonCpp 库的位置移动,但我没有遇到这个问题#include jsoncpp 并在项目的 main.cpp 中创建 Json::Value。在 .cu 文件中,它似乎无法正常工作。

这是我的 Makefile 中的相关内容,这些内容是我从 Udacity 的 CUDA 课程中获得的,并根据我的需要进行了修改:

0 投票
2 回答
7821 浏览

c++ - JsonCpp 写回 Json 文件

我有一个包含以下内容的配置文件:

我已经使用 JsonCpp 来读取上述配置文件的内容。读取配置文件内容正常,但写入配置文件内容失败。我有以下代码:

该代码在控制台中打印正确的输出,但是当此代码执行时配置文件为空。如何使此代码工作?

0 投票
3 回答
772 浏览

json - 使用 json-cpp 解析 json 对象时如何识别重复键?

我正在尝试解析从文件中读取的 json 对象。我想识别重复的键,因为 json-cpp 不喜欢它们(即使它们在 json 中不是非法的)。

我需要能够说:错误:您的 json 文件有重复的键,我们不喜欢这样。

在 strictMode 中使用 reader 并不能解决问题。

0 投票
2 回答
18542 浏览

c++ - jsoncpp。通过匹配值在数组中查找对象

我有这个 JSON 对象:

例如,我需要找到一本authorkey 等于的书Petr。我怎样才能做到这一点?现在我有这段代码:

提前致谢。

0 投票
1 回答
1872 浏览

c++ - jsoncpp:通过名称访问 JSON 对象,返回可变引用,如果找不到则不创建对象

我正在使用 jsoncpp 来操作 JSON 字符串。将字符串解析为 Json::Value 后,我想访问并可能更改其中一个嵌套对象(如果存在)。如果嵌套对象不存在,我不希望它被创建。

查看json 文档,似乎返回对对象的引用的唯一方法是通过 operator[]。

按名称访问对象值,如果不存在则创建一个空成员。

按名称访问对象值,如果没有具有该名称的成员,则返回 null。

我需要结合这两种语义的东西:我想要一个可变引用,但如果它不存在则不涉及创建对象。(我理解为什么 Json::Value 接口是这样设计的:返回一个可变引用会暴露其内部的空对象。)

我能看到的唯一干净的方法是使用 Json::Value::isMember 来确定对象是否存在,然后使用 Value& operator[] 来访问该对象。但这涉及两个 O( log N ) 查找而不是一个,我可能想避免这种情况。

没有丑陋的 const_cast,有什么明智的方法可以做我想做的事吗?

0 投票
1 回答
411 浏览

mfc - 如何用 /clr 编译 jsoncpp?

我最近在我的 mfc 项目中使用了 jsoncpp,它工作正常。但是当我尝试使用 /clr 编译项目时,我得到下面的链接器错误:

1>lib_json.lib(json_writer.obj):错误 LNK2038:检测到“RuntimeLibrary”不匹配:值“MT_StaticRelease”与 Brusher.obj 中的值“MD_DynamicRelease”不匹配

1>lib_json.lib(json_value.obj):错误 LNK2038:检测到“RuntimeLibrary”不匹配:值“MT_StaticRelease”与 Brusher.obj 中的值“MD_DynamicRelease”不匹配

1>lib_json.lib(json_reader.obj):错误 LNK2038:检测到“RuntimeLibrary”不匹配:值“MT_StaticRelease”与 Brusher.obj 中的值“MD_DynamicRelease”不匹配

1>lib_json.lib(json_writer.obj) : 错误 LNK2001: 无法解析的外部符号 "__int64 const std::_BADOFF" (?_BADOFF@std@@3_JB)

1>lib_json.lib(json_writer.obj) : 错误 LNK2001: 无法解析的外部符号 "public: static class std::locale::id std::ctype::id" (?id@?$ctype@D@std@@ 2V0语言环境@2@A)

1>lib_json.lib(json_writer.obj) : 错误 LNK2001: 无法解析的外部符号 "private: static int std::locale::id::_Id_cnt" (?_Id_cnt@id@locale@std@@0HA)

我将如何解决这个问题?

0 投票
1 回答
1126 浏览

c++ - 使用 GCC 在 Linux 中使用库编译命令行

我是计算机视觉领域的 Android 开发人员和工程师。

我正在Mac上使用OpenCV制作计算机视觉项目,在Xcode中使用OS X 10.9.5并且它是跨平台的,所以我正在做的是一个命令行来编译到linux并访问它(服务器) .

我遇到的问题是图书馆JSONCPP没有被识别。我编译它:

g++ -I/home/ec2-user/project/opencv/include/249include/include/ -L/home/ec2-user/project/opencv/build/lib/ -L/home/ec2-user/project/lib/ -I/home/ec2-user/project/jsoncpp-master/include/ -g -o binary main.cpp facerecognition.cpp utils.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib - lopencv_legacy -lopencv_stitching -lopencv_flann -w -std=c++11

输出的哪一部分是:

/home/ec2-user/project/utils.cpp:2475:未定义对“Json::Value::Value(Json::ValueType)”的引用

/home/ec2-user/project/utils.cpp:2478:未定义对“Json::Value::Value(Json::ValueType)”的引用

/home/ec2-user/project/utils.cpp:2479:未定义对“Json::Value::Value(Json::ValueType)”的引用

/home/ec2-user/project/utils.cpp:2484:未定义对“Json::Value::Value(int)”的引用

/home/ec2-user/project/utils.cpp:2484:未定义对“Json::Value::append(Json::Value const&)”的引用

/home/ec2-user/project/utils.cpp:2484:未定义对“Json::Value::~Value()”的引用

/home/ec2-user/project/utils.cpp:2486: 未定义对“Json::Value::Value(std::string const&)”的引用

/home/ec2-user/project/utils.cpp:2486: 未定义对 `Json::Value::operator[](char const*)' 的引用

/home/ec2-user/project/utils.cpp:2486:未定义对“Json::Value::operator=(Json::Value)”的引用

/home/ec2-user/project/utils.cpp:2486:未定义对“Json::Value::~Value()”的引用

/home/ec2-user/project/utils.cpp:2487:未定义对“Json::Value::Value(Json::Value const&)”的引用

/home/ec2-user/project/utils.cpp:2487: 未定义对 `Json::Value::operator[](char const*)' 的引用

/home/ec2-user/project/utils.cpp:2487:未定义对“Json::Value::operator=(Json::Value)”的引用

/home/ec2-user/project/utils.cpp:2487:未定义对“Json::Value::~Value()”的引用

/home/ec2-user/project/utils.cpp:2488:未定义对“Json::Value::append(Json::Value const&)”的引用

/home/ec2-user/project/utils.cpp:2479:未定义对“Json::Value::~Value()”的引用

/home/ec2-user/project/utils.cpp:2489:未定义对“Json::Value::~Value()”的引用

/home/ec2-user/project/utils.cpp:2491:未定义对“Json::StyledWriter::StyledWriter()”的引用

/home/ec2-user/project/utils.cpp:2492:未定义对“Json::StyledWriter::write(Json::Value const&)”的引用

/home/ec2-user/project/utils.cpp:2475:未定义对“Json::Value::~Value()”的引用

/home/ec2-user/project/utils.cpp:2484:未定义对“Json::Value::~Value()”的引用

/home/ec2-user/project/utils.cpp:2486:未定义对“Json::Value::~Value()”的引用

/home/ec2-user/project/utils.cpp:2487:未定义对“Json::Value::~Value()”的引用

/home/ec2-user/project/utils.cpp:2479:未定义对“Json::Value::~Value()”的引用

我不得不提一下,我之前用这个 Makefile 为 Android (NDK) 编译过这个:

LOCAL_PATH := $(调用我的目录)

包括 $(CLEAR_VARS)

OPENCV_CAMERA_MODULES:=关闭

OPENCV_INSTALL_MODULES:=开启

包括 $(LOCAL_PATH)/jsoncpp/Android.mk

包括/Users/rafaelruizmunoz/Desktop/AndroidDevelopment/OpenCV-2.4.9-android-sdk/sdk/native/jni/OpenCV.mk

OPENCV_LIB_TYPE:=共享

LOCAL_C_INCLUDES += $(LOCAL_PATH)

LOCAL_C_INCLUDES += /Users/rafaelruizmunoz/OpenCVtry/

LOCAL_C_INCLUDES += /Users/rafaelruizmunoz/Desktop/RD/OpenCVtry/Libraries/jsoncpp-master/include

LOCAL_PATH := jni

LOCAL_ALLOW_UNDEFINED_SYMBOLS := 真

LOCAL_MODULE := libXYZ

LOCAL_MODULE_NAME := mylibXYZ

LOCAL_SRC_FILES := facerecognition.cpp androidClass.cpp main.cpp utils.cpp helper.cpp lbp.cpp

LOCAL_LDLIBS += -llog -ldl

LOCAL_CPPFLAGS := -std=c++11

LOCAL_CFLAGS := -w

CFLAGS=-w -g -Wall -Wextra -std=c++11 -Wno-write-strings ../../include/boost

LOCAL_SHARED_LIBRARIES := libJsoncpp libopencv_java

包括 $(BUILD_SHARED_LIBRARY)

效果很好。

在我的 Mac 上,它可以完美编译。我必须做的是带有 Xcode 生成器的 JSONCPP Makefile 并添加为项目:

在此处输入图像描述

但是我没有将它编译到 Linux 中的线索。

你知道该怎么做吗?提前致谢。

问候。

0 投票
1 回答
4454 浏览

c++ - jsoncpp 运算符中未定义的引用=

如何解决以下链接器错误 wrt jsoncpp operator=.

我创建一个Json::Value这样的对象

当我尝试链接 Ubuntu 14.04 附带的默认 libjsoncpp-dev 时,这会出现以下链接器错误

未定义对 `Json::Value::operator=(Json::Value)' 的引用

额外信息:

而且在编译并链接到来自 GitHub 的最新 jsoncpp 时,我没有收到此链接器错误。

/usr/include/jsoncpp/json 中的 value.h(由 ubuntu apt 安装)有

最新的 jsoncpp value.h 有

0 投票
2 回答
849 浏览

jsoncpp - 为 JsonCpp 寻找 Visual Studio 可视化工具(natvis)

我正在寻找 JsonCpp 的natvis文件,但找不到任何文件。

有人知道这样的文件吗?