cpprestsdk库的高级用法,json to object

对于 cpprestsdk 库的高级用法,特别是在将 JSON 转换为对象时,你可以使用该库提供的功能来简化这一过程。cpprestsdk 是一个 C++ 的跨平台库,用于处理 HTTP 请求和响应,同时也提供了 JSON 数据的处理功能。

一、代码示例

1、客户端

#include <cpprest/http_client.h>
#include <cpprest/filestream.h>
#include <cpprest/json.h>
using namespace std;
using namespace utility;
using namespace web;
using namespace web::http;
using namespace web::http::client;
using namespace concurrency::streams;

int main()
{
  
    http_client client(U("http://127.0.0.1:5000/"));
    uri_builder builder(U("/users"));  // 指定请求的路径为/users

    // 发送 GET 请求
    http_request request(methods::GET);
    request.set_request_uri(builder.to_string());  // 设置请求的URI为构建的URL
    request.headers().add(U("Accept"), U("application/json"));

    // 获取响应
    http_response response = client.request(request).get();

    // Check the status code.
    if (response.status_code() != 200)
    {
        throw std::runtime_error("Returned " + std::to_string(response.status_code()));
    }

    // Read the response body as a string.
    auto response_body = response.extract_string().get();

    // Output the response body for debugging.
    std::cout << "Response Body: " << response_body << std::endl;

    // Parse the response body as a JSON array.
    json::value jsonArray;
    try {
        jsonArray = json::value::parse(response_body);
    } catch (const web::json::json_exception& e) {
        std::cerr << "Failed to parse JSON: " << e.what() << std::endl;
    }

    auto name1=jsonArray.as_array()[0][U("name")].as_string();
    cout<<"jsonArray.as_array()[0]=="<<name1<<endl;
    // Now you can iterate over the JSON array:
    for (auto &user : jsonArray.as_array())
    {
        auto name = user[U("name")].as_string();
        auto age = user[U("age")].as_integer();
        cout << "name=" << name << ", age=" << age << endl;
    }



    return 0;
}

2、服务端:

from flask import Flask, jsonify, request

app = Flask(__name__)

# 获取所有用户的列表
@app.route('/users', methods=['GET'])
def get_users():
    # 返回所有用户的列表
    return jsonify(users)

# 获取特定用户的详细信息
@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
    # 返回特定用户的详细信息
    return jsonify(user)

# 创建一个新用户
@app.route('/users', methods=['POST'])
def create_user():
    new_user = request.json
    # 创建新用户并返回成功状态码
    return jsonify({'message': 'User created successfully'}), 201

# 更新特定用户的信息
@app.route('/users/<int:user_id>', methods=['PUT'])
def update_user(user_id):
    updated_user = request.json
    # 更新特定用户的信息并返回成功状态码
    return jsonify({'message': 'User updated successfully'}), 200

# 删除特定用户
@app.route('/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
    # 删除特定用户并返回成功状态码
    return jsonify({'message': 'User deleted successfully'}), 200

if __name__ == '__main__':
    # 初始化用户数据
    users = [
        {'id': 1, 'name': '张三', 'age': 20},
        {'id': 2, 'name': '李四', 'age': 25},
        {'id': 3, 'name': '王五', 'age': 30}
    ]
    app.run(debug=True)

二、结果展示

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值