// 一条json数据结构示例:
let data = {
"id": 1,
"param": {
"cid": 1,
"obj1": [
{
"id": 1,
"name": "一"
},
{
"id": 2,
"name": "二"
}
],
"obj2": [
{
"id": 1,
"name": "备注二",
"list": [
{
"id": 1,
"name": "列表一"
},
{
"id": 2,
"name": "列表二"
}
]
}
],
"arr1": [1, 4, 50]
}
}
// 前端 js 发ajax 请求
$.ajax({
url: "接口地址 ",
data: JSON.stringify(data),
type: "POST",
dataType: "json",
async: false,
contentType: "application/json", //必须这样写POST 还要加JSON.stringify() get不加JSON.stringify()
success: function (data) {
console.log(data);
// 成功
},
error: function (text) {
console.log(text);
}
});
// C++ 接收函数
{
string cmdjson(cmdstr); CJsonObject cmd(cmdjson);
string ackjson(ackstr); CJsonObject ack(ackjson);
int id, cid;
CJsonObject obj1;
CJsonObject obj2;
cmd.Get("id", id);
cmd["param"].Get("cid", cid);
cmd["param"].Get("obj1", obj1);
cmd["param"].Get("obj2", obj2);
for(unsigned int i=0;i < obj1.GetArraySize();i++){
MyObj utg;
utg.parseJSON(obj1[i]);
cout << utg.getId() << endl;
std::cout << obj1[i].ToString() << std::endl;
cout << obj1[i].ToFormattedString() << endl;
}
for(unsigned int i=0;i < obj2.GetArraySize();i++){
MyObj objItem;
objItem.parseJSON(obj2[i]);
for(int n=0; n < obj2[i]["list"].GetArraySize(); n++){
MyObj w;
w.parseJSON(obj2[i]["list"][n]);
cout << "----------------ddd --- " << w.getId() << endl;
}
}
int len = cmd["param"]["arr1"].GetArraySize();
int sList[len];
for(int i=0; i< len; i++) {
cmd["param"]["arr1"].Get(i, sList[i]);
cout << "ioioid=== " << sList[i] << endl;
}
ack.Replace("param", 1);
ackchars(ack,ackstr,acklen);
return 0;
}
int ackchars(CJsonObject & ack ,char * ackstr,long acklen)
{
unsigned long i;
string ss= ack.ToFormattedString();
const char * tmp = ss.c_str();
unsigned int size =ss.size();
memset(ackstr,0,acklen);
for(i=0;i<size&&i<acklen-1;i++ )
{
ackstr[i]=tmp[i];
}
ackstr[i]='\0';
return 0;
}
MyObj.h:
#include <stdio.h>
#include<iostream>
#include<vector>
#include<string>
#include "CJsonObject.hpp"
using namespace std;
using namespace neb;
class MyObj
{
public:
int id;
string name;
string getName();
void setName(string fName);
int getId();
void setId(int val);
string toJsonString();
CJsonObject toJsonObject();
int parseJSON(string str);
int parseJSON(CJsonObject oJson);
};
MyObj.cpp:
#include "MyObj.h"
string MyObj:: getName() {
return name;
}
void MyObj::setName(string fName) {
name=(fName);
}
int MyObj::getId() {
return id;
}
void MyObj::setId(int val) {
id=(val);
}
string MyObj::toJsonString() {
CJsonObject oJson;
oJson.AddEmptySubObject("obj");
oJson.Add("id", id);
oJson.Add("name", name);
return oJson.ToString();
}
CJsonObject MyObj::toJsonObject()
{
CJsonObject je;
je.Add("id", id);
je.Add("name",name);
return je;
//return je.ToFormattedString();
}
int MyObj::parseJSON(string str) {
CJsonObject oJson(str);
oJson.Get("id", id);
oJson.Get("name", name);
return 0;
}
int MyObj::parseJSON(CJsonObject je) {
je.Get("id", id);
je.Get("name", name);
return 0;
}
//返回示例
{
string cmdjson(cmdstr); CJsonObject cmd(cmdjson);
string ackjson(ackstr); CJsonObject ack(ackjson);
int ugid;
cmd.Get("param",ugid);
CJsonObject je;
je.Add("gid", 1);
je.AddEmptySubArray("list");
for(int i = 0; i< list.size(); i++) {
MyObj o;
je["list"].Add(o.toJsonObject());
}
je.AddEmptySubArray("caroList");
for(int i = 0; i< arrlist.size(); i++) {
je["caroList"].Add(arrlist[i]);
}
je.AddEmptySubArray("input");
CJsonObject obj;
obj.Add("id", 1);
obj.Add("name", "demo");
je["input"].Add(obj);
ack.Replace("param",je);
ackchars(ack,ackstr,acklen);
return 0;
}