Member 13476370 Ответов: 1

Доступ к вложенной структуре в файле json


Я использую заморожены.ч для файлов json .. Я хочу прочитать информацию о массиве книг из .JSON-файл в массив структур
***********проблема 1**********

.. struct book имеет вложенную дату структуры, к которой я хочу получить доступ в файле .json .. но библиотека не позволит мне ... если вы знаете решение моей проблемы с замороженными.h или вы бы порекомендовали другую библиотеку для файлов json в C, которая поддерживает следующую функцию:
* чтение/запись из/в json-файл и массив структур, имеющих вложенные структуры
*сканирует строку непосредственно в переменные языка Си
* выводит переменные C непосредственно в выходной поток
* изменяет существующую строку JSON

*********Задача 2**********

при хранении названия книги в массиве[0].например, название сохраненной строки-это только автоматизация, а не Автоматизация и робототехника

Что я уже пробовал:

#include <stdio.h>
#include "frozen.h"
#include <stdlib.h>
#include <string.h>
typedef struct
{

    int day;
    int month;
    int year;
} dateStruct;

typedef struct
{

    char title[10];
    char author[10];
    char publisher[10];
    char ISBN[10];
    dateStruct date;
    int copies;
    int current;
    int times_borrowed;
} book;
int main()
{   book array[3];

  char *content = json_fread("tmp.json");
//tmp.json exists near main.c 
//and written in json format
  int i, value, len = strlen(content);
  struct json_token t;
  for (i = 0; json_scanf_array_elem(content, len, ".book", i, &t) > 0; i++) {
    json_scanf(t.ptr, t.len, "{title: %s}", &(ar[i].title));
    printf("%s\n\n",array[i].title);

  }
    return 0;
}


==========файл json ============
Цитата:
{
"книга": [

{
"название": "автоматизация и робототехника",
"автор": "Милтиадис Бобулос",
"издательство": "Academic Studies Press",
"Книги": "978-87-7681-696-4",
"дата" : [
{
"день":14
"месяц":12
"год выпуска": 2017
} ],
"копии":5
"ток":3



},

{
"название": "инженерное дело",
"автор": "Абимбола Виндапо",
"издатель": "Allen &Unwin",
"Книги": "978-87-403-0362-9",
"дата" : [
{
"день":14
"месяц":12
"год выпуска": 2017
} ],
"копии":7
"ток":6

}

]
}

Richard MacCutchan

замороженный.h-это заголовочный файл C/C++. Какую реальную библиотеку вы пытаетесь использовать и что говорится в документации?

1 Ответов

Рейтинг:
1

KarstenK

вы не используете библиотеку правильным образом. Взгляните на это пример кода на Github понять это. Ключевой функцией является json_scanf, который может иметь другой параметр, например указатель функции для сканирования подобъектов. Остальное - это некоторая вложенность кода в соответствии с вашей структурой данных.