gpt4 book ai didi

c - C 中的 JSON 响应格式

转载 作者:行者123 更新时间:2023-11-30 15:19:34 24 4
gpt4 key购买 nike

我的任务是向来自 C 网站的请求发送 JSON 响应。我无法以正确的格式格式化响应。

基本上是这样的过程:用户单击网站上的“StopAll”按钮,我需要发回所有设备的数据作为一切已成功完成的响应。我知道原始数据和格式应该是什么样子......但我无法将其转换为“C”......

数据:

更新所有请求:

{powerStates: [true, false], startStates: [false, false], temperatures: [30, 40], macAddresses: ['11', '22'], status_code: 1}

我尝试过的代码:

if (client) {
Serial.println ("new client");
// An http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected ()) {
if (client.available ()) {
char c = client.read ();
buffer + = c;
Serial.write (c);

// If you've gotten to the end of the line (received a newline
// Character) and the line is blank, the http request has ended,
// So you can send a reply

if (buffer.indexOf ("true")> = 0 || buffer.indexOf ("false")> = 0) {

// You're starting a new line

client.println ("HTTP / 1.1 200 OK");
client.println ("Content-Type: application / json");
//client.println ();
client.println ("{\" powerStates \ ": [\" true \ ", \" true \ ", \" true \ "], \" startStates \ ": [\" false \ ", \" false \ " , \ "false \"], \ "temperatures \": [\ "444 \", \ "22 \", \ "33 \"], \ "macAddresses \": [\ "11-22-33-34 \ ", \" 11-22-33-35 \ ", \" 11-22-34-37 \ "], \" status_code \ ": 1}");
client.println ();

以上是响应代码......但它不会改变网站上的任何数据。所以我不确定这个回复是否会发布到网络上。

有办法找到吗?

最佳答案

如果您只有一个简单的 JSON 要输出,您可以避免使用 JSON 库,而只使用 printf。

#include <stdio.h>
#include <stdlib.h>


// Output simple fixed JSON data.
int main(int argc, char* *argv)
{
// Simulate your data as simply as possible
bool powerStates[2];
bool startStates[2];
int temperatures[2];
int macAddresses[2];
int status_code;


// Set your data
powerStates[0] = true;
powerStates[1] = false;
startStates[0] = false;
startStates[1] = false;
temperatures[0] = 30;
temperatures[1] = 40;
macAddresses[0] = 11;
macAddresses[1] = 22;
status_code = 1;


// Output JSON very simply
printf("{powerStates: [%s, %s], startStates: [%s, %s], temperatures: [%d, %d], macAddresses: ['%d', '%d'], status_code: %d}",
powerStates[0]?"true":"false",
powerStates[1]?"true":"false",
startStates[0]?"true":"false",
startStates[1]?"true":"false",
temperatures[0],
temperatures[1],
macAddresses[0],
macAddresses[1],
status_code = 1);

return 0;
}

如果您需要将其放在字符串中而不是输出中,只需更改为 sprintf 即可。

关于c - C 中的 JSON 响应格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30585407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com