- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 RapidJSON 解析从服务器接收到的数据。以下是收到的确切字符串:
[
{
"Node": "9478149a08f9",
"Address": "172.17.0.2",
"ServiceID": "HSS",
"ServiceName": "HSS",
"ServiceTags": [],
"ServiceAddress": "",
"ServicePort": 6666,
"ServiceEnableTagOverride": false,
"CreateIndex": 2855,
"ModifyIndex": 2855
}
]
Mã như sau
int main(void)
{
CURL *curl;
CURLcode res;
struct MemoryStruct chunk;
chunk.memory = (char *)malloc(1); /* will be grown as needed by the realloc above */
chunk.size = 0; /* no data at this point */
/* In windows, this will init the winsock stuff */
curl_global_init(CURL_GLOBAL_ALL);
/* get a curl handle */
curl = curl_easy_init();
if(curl) {
/* First set the URL that is about to receive our POST. This URL can
just as well be a https:// URL if that is what should receive the
data. */
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:8500/v1/catalog/service/HSS");
/* Now specify the POST data */
// Set the callbackfunction to handle the JSON string
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefunc);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &chunk);
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
/* always cleanup */
curl_easy_cleanup(curl);
}
std::string str;
str.assign(chunk.memory,chunk.size);
cout<<"The string response is :"<<><>
Document d;
d.Parse(str.c_str());
assert(d.IsObject());
<-- 这里失败了
JSON 数据有效但不确定为什么仍然失败。
1 Câu trả lời
您的 JSON 字符串是数组。因此,如果您检查 IsObject()
,它会失败。仔细看JSON字符串,你会发现你关心的是[]
,这表明它是一个数组。
取自JSON官网:
An array begins with [ (left bracket) and ends with ] (right bracket). Values are separated by , (comma).
试试下面的代码:
string str_json = "[{\"Node\":\"9478149a08f9\",\"Address\":\"172.17.0.2\",\"ServiceID\":\"HSS\",\"ServiceName\":\"HSS\",\"ServiceTags\":[],\"ServiceAddress\":\"\",\"ServicePort\":6666,\"ServiceEnableTagOverride\":false,\"CreateIndex\":2855,\"ModifyIndex\":2855}]";
rapidjson::Document doc;
doc.Parse(str_json.c_str());
//assert(doc.IsObject());
if(doc.IsArray()){
cout << "is array" << endl;
}
for(Value::ConstValueIterator itr = doc.Begin(); itr != doc.End(); ++itr){
const Value& obj = *itr;
for(Value::ConstMemberIterator it = obj.MemberBegin(); it != obj.MemberEnd(); ++it){
if(it->value.IsString()){
cout << it->name.GetString() << ": " << it->value.GetString() << endl;
}
// other codes...
}
}
关于curl - 快速 JSON 失败,断言 `IsObject()' 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35875401/
Gần đây tôi mới bắt đầu học MongoDB. Hôm nay giáo viên dạy chúng tôi lệnh mongoexport. Trong khi thực hành, tôi đã gặp phải một vấn đề điển hình mà không có học viên nào khác, kể cả huấn luyện viên, từng gặp phải. Tôi đang sử dụng Mongo trên máy Windows 10 của mình
Tôi mới tìm hiểu về JSON Schema và đã đọc bài JSON Schema là gì cùng nhiều bài viết khác. Nhưng tôi không biết cách liên kết JSON Schema với JSON để xác thực với JSON Schema đó. Có ai có thể giải thích được điều này không?
Trong xml, tôi có thể đưa một tệp vào một tệp xml khác và sử dụng tệp đó. Nếu phần mềm của bạn lấy các tệp cấu hình từ xml nhưng không có cách nào để tách cấu hình, như apache/ngnix (nginx.conf - site-av
Tôi có một đối tượng JSON chứa một chuỗi, bản thân chuỗi này cũng là một đối tượng JSON. Tôi có thể hủy tuần tự hóa nó như thế nào? Tôi muốn có thể làm điều gì đó như thế này: #[derive(Deserialize)] struct B { c: S
Hãy xem xét JSON sau { "a": "{\"b\": 12, \"c\": \"test\"}" } Tôi muốn định nghĩa một Reader Reads[Outer[T]] chung cho lệnh nhập Json được tuần tự hóa này
đóng cửa. Câu hỏi này không đáp ứng được hướng dẫn của Stack Overflow. Hiện tại câu hỏi này không chấp nhận câu trả lời. Bạn muốn cải thiện vấn đề này? Cập nhật câu hỏi để nó phù hợp với chủ đề của Stack Overflow. Đã đóng 11 tháng trước. Cải thiện
Dự án cũ của tôi có dữ liệu ở định dạng JSON chuẩn trong MySQL. Đối với dự án hoàn toàn mới của tôi trong JS (Node.js) và DynamoDB, liên quan đến định dạng JSON chuẩn: Có nên chuyển đổi nó thành
Chuỗi giá trị JSON, số, đúng, sai, null có phải là JSON hợp lệ không? Nghĩa là, liệu đây có thực sự là một tài liệu JSON hợp lệ không? Hay nó phải là một mảng/đối tượng? Một số trình xác thực chấp nhận điều này (ví dụ: http://jso
Tôi có một chuỗi JSON và một trong các trường là trường văn bản. Trường văn bản này có thể chứa văn bản mà người dùng nhập vào UI và nếu văn bản họ nhập là văn bản JSON, có lẽ để tính đến một số mã hóa, tôi cần mã hóa văn bản của họ để nó không
Tôi đang xử lý dữ liệu thông qua lệnh gọi IBM MQ và khi được tuần tự hóa bằng ColdFusion 10 (10,0,11,285437), 0 được trả về là +0.0, dẫn đến JSON không hợp lệ và không thể hủy tuần tự hóa. stPol
Tôi đang tạo một hàm băm từ ba mảng và sau đó cố gắng xây dựng một tệp json. Tôi đã thành công với đối tượng json có mảng. yêu cầu 'json' A = [['A1', 'A2', 'A3'],
Tôi nhận được JSON từ API và phản hồi có thể là một trong 30 loại. Mỗi loại có một tập hợp các trường riêng, nhưng tất cả các phản hồi đều có một loại trường cho biết đó là loại nào. Cách tiếp cận của tôi là sử dụng serde. Tôi tạo một cấu trúc cho mỗi loại phản hồi và
Tôi đang tải xuống tệp JSON mà tôi đã kiểm tra là JSON hợp lệ với "https://jsonlint.com" vào thư mục tài liệu. Sau đó tôi mở tệp và kiểm tra lại thì thấy tệp đó là JSON không hợp lệ. Làm sao điều này có thể xảy ra được? ? ? ? Đây là
Tôi đang cố gắng tạo động một đối tượng JSON dựa trên dữ liệu nhận được từ API. Dữ liệu mẫu đã nhận: Giải mã dữ liệu thành cấu trúc CiItems được đưa ra bên dưới { "class_name": "test", "
Tôi muốn chuyển đổi từ chuỗi sang đối tượng. Từ {"key1": "{\n \"key2\": \"value2\",\n \"key3\": {\n \"key4\": \"value4\"\n }\n
Hiện tại tôi đang sử dụng mã sau để chuyển đổi json lồng nhau thành json phẳng: import ( "fmt" "github.com/nytlabs/gojsonexplode" ) func
Tôi có một ứng dụng sử dụng dữ liệu từ API của bên thứ ba. Tôi cần giải mã json thành một struct, yêu cầu struct phải có thẻ json cho trường json "đến". Các trường json gửi đi có quy ước đặt tên khác nhau nên tôi cần các quy ước khác nhau
Tôi muốn sử dụng JSON Schema để xác thực một số giá trị. Tôi có hai đối tượng, gọi chúng là trackedItems và trackedItemGroups. trackedItemGroups là tên nhóm và trackedItem
Hãy xem xét lược đồ lớp trường hợp sau, lớp trường hợp Y (a: Chuỗi, b: Chuỗi) lớp trường hợp X (giả: Chuỗi, b: Y) Trường b là tùy chọn và một số tập dữ liệu của tôi không có trường.
Tôi đang lưu trữ đầu ra của lệnh cat ~/path/to/file/blah | jq tojson trong một biến để sử dụng sau này trong curl POST với nội dung JSON. Nó hoạt động tốt, nhưng nó xóa hết các ngắt dòng. Tôi biết
Tôi là một lập trình viên xuất sắc, rất giỏi!