iPhone: Как программно создать файл json и вставить в него данные, полученные из моей базы данных Sqlite?

#iphone #objective-c #cocoa-touch #json #ios4

#iPhone #objective-c #cocoa-touch #json #ios4

Вопрос:

Я хочу получить данные из моей базы данных Sqlite и поместить их в этот файл JSON.

Как я могу создать файл json и вставить данные, полученные из моей базы данных, в файл JSON?

Мне нужны данные в файле JSON в этом формате:

 {

"data": [
    {
        "data": [
            null,
            null,
            30,
            45,
            69,
            70,
            65
        ],
        "title": "title5" 
    },
    {
        "data": [
            null,
            5,
            10,
            15,
            22,
            30 
        ],
        "title": "title4" 
    },
    {
        "data": [
            40,
            55,
        ],
        "title": "title3" 
    },
    {
          "data": [
              null,
            89,
            90,
            85
        ],
        "title": "title2" 
    },
    {
        "data": [
            66,
            77,
            55,
            33,
            50,
            -6,
            -8
        ],
        "title": "title1" 
    } 
],
 "x_labels": [
    6,
    7,
    8,
    9,
    10,
    11,
    12
]
}
  

Как я могу это сделать?

Комментарии:

1. Json — это метод синтаксического анализа, вы должны поместить данные в текстовый файл из базы данных в желаемом формате, затем вы можете использовать синтаксический анализ json для анализа данных json локального файла

Ответ №1:

Создайте объект Obj C, считывающий данные из вашей базы данных sqlite. Скажите

 @interface Data:NSObject {
  NSArray *data;
  NSString *title;
}

NSArray *dataArray; // array of data filled with all Data object read from database.
  
  1. Используйте JSON Framework для преобразования всех данных в строку JSON. Обратите внимание, что для объекта Data вам нужно переопределить proxyForJson метод, поскольку это пользовательский объект.

Вы можете создать строку JSON из объекта ,

 SBJsonWriter *writer = [SBJsonWriter new];
NSString *jsonString = [writer stringWithObject:dataArray];
[writer release];
  

Я не уверен, работает ли это напрямую для array, если нет, инкапсулируйте ваш dataArray в anotherObject и отправьте этот объект этому JSON writer.

Запишите строку JSON в файл.

  [jsonString writeToFile:path atomically:YES encoding:NSASCIIStringEncoding 
             error:nil]
  

Комментарии:

1. Я думаю, вы очень близки к ответу. Не могли бы вы, пожалуйста, предоставить dataArray и показать, как из него создается файл?

2. Я также сомневаюсь в том, как использовать каждый из моих наборов данных с одинаковым ключом «data» и «title»? Я полагаю, что он перезаписывает значения, когда я пытаюсь извлечь данные из базы данных в свой словарь.

Ответ №2:

Чтобы создать выходные данные в формате json, что вы можете сделать, это сначала получить данные sqlite в некотором массиве, списке или словаре и т.д., Затем использовать функцию JSONRepresentation для отображения выходных данных в формате JSON для того же, вот пример кода, который может вам помочь

-(void)create_Json
{
 NSArray *arr = [[NSArray alloc] инициализировать с объектами:@"Ravi",@"Riki",@"Faisal", @"Sanjay", nil];

 NSMutableDictionary *dict = [[NSMutableDictionary alloc]инициализация];
 [установить значение dict:arr forKey:@"Friends"];

 NSLog(@"Представление JSON для словаря равно %@",[указать представление JSON]);

}

Убедитесь, что вы импортируете библиотеки JSON.

Комментарии:

1. Спасибо за ввод. Я хочу, чтобы это было в файле JSON с a . расширение json в моем основном пакете. Я не просто хочу это отобразить. Как я могу создать из него файл json?

2. @Parth: итак, позвольте мне понять, вы хотите, чтобы файл json был создан в вашем основном пакете, это так, и даже если это так, вы не можете этого сделать, потому что пакет iPhone имеет доступ только для чтения. Вы можете использовать document directory для выполнения такого рода действий, например, вы создаете выходные данные json и файл с . расширение json в файле document directory. Надеюсь, это поможет