SQLite 从 JSON 对象 ios 插入多行

SQLite Insert Multiple rows from JSON object ios

我正在使用 NSURLSession class

通过 http 获取 json 数据
    NSString *url = @"http://10.0.0.25/Website/database.php";

NSURLSessionTask *task = [[NSURLSession sharedSession] dataTaskWithURL:[NSURL URLWithString:url] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    dispatch_async(dispatch_get_main_queue(), ^{ 
        NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"String Output: %@",str);


    });
}];
[task resume];

我得到以下示例输出:

{ "client_id":"12", "finger_print_code":"", "national_id":"28811982" }, { "client_id":"32", "finger_print_code":"", "national_id":“293239323” }

我想从 JSON 字符串或对象中获取上述数据到我的 SQLite 数据库中。有人建议FMDB,但我不是很熟悉

  query = [NSString stringWithFormat:@"insert into clientInfo values(null, %d, %d, '%@')", [importedID intValue], [nationalID intValue], fingerPrintCode];

这是 insert multiple data 的方法,但我想学习如何插入来自 JSON 的数据,并立即或同时插入。 Here 是示例之一,但事实证明它没有帮助。

假设样本数据实际上是一个JSON数组

[{ "client_id":"12", "finger_print_code":"", "national_id":"28811982" },
 { "client_id":"32", "finger_print_code":"", "national_id":"293239323" }]

并且您使用的 sqlite 版本启用了 JSON1 扩展,您可以执行类似

INSERT INTO clientInfo(client_id, finger_print_code, national_id)
SELECT json_extract(j.value, '$.client_id')
     , json_extract(j.value, '$.finger_print_code')
     , json_extract(j.value, '$.national_id')
FROM json_each(?) AS j;

将包含 JSON 数组的字符串绑定到从上述查询创建的准备好的语句中的参数。根据需要调整列名(因为你没有给出我猜的 table 定义)。

感谢您的回答。这就是我在 Objective-c 中实现它的方式,以防有人可能想知道 how.In 在这种情况下,我使用自定义数据库 class 与我的 SQLite 数据库进行通信。

        NSString *queryInsert;
    queryInsert = [NSString stringWithFormat:@"INSERT INTO clientInfo(clientID, nationalID, fingerPrintCode) SELECT json_extract(j.value, '$.client_id') , json_extract(j.value, '$.national_id') , json_extract(j.value, '$.finger_print_code')  FROM json_each('%@') AS j", my_json_array];
    [self.dbManager executeQuery:queryInsert];

其中 my_json_array 正是我从服务器获取的数据的 jsonArray。我对 JSON1 扩展不太了解,感谢您的帮助和分享这些知识。