mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
60 lines
1.6 KiB
C
60 lines
1.6 KiB
C
/*
|
|
* Copyright (C) 2021 Inria
|
|
*
|
|
* This file is subject to the terms and conditions of the GNU Lesser
|
|
* General Public License v2.1. See the file LICENSE in the top level
|
|
* directory for more details.
|
|
*/
|
|
|
|
/**
|
|
* @ingroup tests
|
|
* @{
|
|
*
|
|
* @file
|
|
* @brief coreJSON package test application
|
|
*
|
|
* Adapted to RIOT style from the [reference example](https://github.com/FreeRTOS/coreJSON#reference-example)
|
|
*
|
|
* @author Alexandre Abadie <alexandre.abadie@inria.fr>
|
|
*
|
|
* @}
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include "core_json.h"
|
|
|
|
int main(void)
|
|
{
|
|
/* Variables used in this example. */
|
|
JSONStatus_t result;
|
|
char buffer[] = "{\"foo\":\"abc\",\"bar\":{\"foo\":\"xyz\"}}";
|
|
size_t bufferLength = sizeof(buffer) - 1;
|
|
char queryKey[] = "bar.foo";
|
|
size_t queryKeyLength = sizeof(queryKey) - 1;
|
|
char *value;
|
|
size_t valueLength;
|
|
|
|
/* Calling JSON_Validate() is not necessary if the document is guaranteed to be valid. */
|
|
result = JSON_Validate(buffer, bufferLength);
|
|
|
|
if (result == JSONSuccess) {
|
|
result = JSON_Search(
|
|
buffer, bufferLength, queryKey, queryKeyLength,
|
|
&value, &valueLength
|
|
);
|
|
}
|
|
|
|
if (result == JSONSuccess) {
|
|
/* The pointer "value" will point to a location in the "buffer". */
|
|
char save = value[valueLength];
|
|
/* After saving the character, set it to a null byte for printing. */
|
|
value[valueLength] = '\0';
|
|
/* "Found: bar.foo -> xyz" will be printed. */
|
|
printf("Found: %s -> %s\n", queryKey, value);
|
|
/* Restore the original character. */
|
|
value[valueLength] = save;
|
|
}
|
|
|
|
return 0;
|
|
}
|