#c #json #arduino
Вопрос:
Я пишу программу, в которой мне нужно получить доступ к последнему элементу массива из документа json. массив изначально пуст, а размер не определен. есть ли способ получить последний элемент, как в python, мы используем[-1] для доступа к последнему.
JsonArray Time_hours = doc["Time"]["hours"];
JsonArray Time_min = doc["Time"]["min"];
int size_hours = sizeof(Time_hours) / sizeof(int);
int size_min = sizeof(Time_min) / sizeof(int);
for(int i=1;i< size_hours ;i ){
if(now.hour() == Time_hours[i] amp;amp; now.minute() == Time_min[i])
{
ring_bell(1);
}
}
Комментарии:
1. Вам нужно знать размер. Это помогло бы увидеть пример того, с чем вы работаете.
2. Что вы используете для анализа документа json?
3. я использую библиотеку Arduinojson для анализа формата json.
4. Код Arduino-это C , и
JsonArray
это класс. Таким образом, у него будет метод, который сообщит вам длину массива. Вы можетеArduino JsonArray length
поискать в Google название этого метода.5.
Time_hours.size()
Ответ №1:
Как сказал ниндзя, вам нужно знать размер, как только вы узнаете размер, вы сделаете что-то вроде этого
#include <stdio.h>
#define len(arr) sizeof (arr)/sizeof (arr[0])
int main()
{
int a[5] = {2,5,6,1,4};
printf("%zun",len(a));
printf("%dn",a[len(a) - 1]);
return 0;
}
Комментарии:
1.
sizeof
это оператор, а не функция; вам не нужны круглые скобки.2. Это более читабельно, по крайней мере для меня, это плохая практика?
3. Ну, вы можете поставить скобки там, где хотите. Я воспринимаю ненужные скобки как беспорядок. Добавление их всегда является вопросом стиля, когда в этом нет необходимости, споры приводят к «войнам стилей», подобным размещению фигурных скобок или условиям Йоды . По крайней мере, я бы отделил ключевое слово от открывающей скобки, чтобы было ясно, что это не функция.
4. Я предполагаю, что OP имеет представление массива JSON, а не простого массива C.
5. я хочу взять переменную из массива json,поместить ее в массив C и выполнить итерацию по ней с помощью цикла for.но чтобы установить ограничение, мне нужно знать размер массива, который не указан . итак, как мне следует действовать