添加json文件并在控制台中打印

时间:2016-02-07 10:12:15

标签: ios objective-c json

我知道如何创建虚拟json数据并在控制台中打印它们,如下面的代码:

 NSArray *jsonObject;
    jsonObject = @[@{@"Id1":@"mad",
                     @"people1":@"300"},
                   @{@"Id2":@"normal",
                     @"people2":@"9",@"total2":@"300"}];

    NSError *err;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonObject options:NSJSONWritingPrettyPrinted error:nil];



    NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:jsonData options: NSJSONReadingMutableContainers error: &err];


        NSLog(@"%@,%@",jsonArray);

我有一个文件名 Areafiles.JSON 。在那个文件中我有一些json数据。我直接拖放我的项目。

如何在我的控制台中阅读和打印,就像上面的例子一样?

3 个答案:

答案 0 :(得分:1)

对于Swift:

假设您的项目中有一个名为 a.json 的Json文件,如下所示:

{
"person":[
          {
            "name": "Bob",
            "age": "16",
            "employed": "No"
          },
          {
            "name": "Vinny",
            "age": "56",
            "employed": "Yes"
          }
        ]
}

现在只需按照以下三个简单步骤进行操作:

  1. 阅读文件
  2. 将文件内容转换为NSData
  3. 将NSData转换为JSON对象
  4. 现在您可以随意使用Json对象:

        // Get the path to the JSON File
        if let path = NSBundle.mainBundle().pathForResource("a", ofType: "json")
        {
            // Load the contents of the file into an NSData object
            if let jsonData = NSData(contentsOfFile: path)
            {
    
                do {
    
                    // Serialize the jsonData object to make a Json object
                    let jsonResult = try NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.AllowFragments)
    
                    if let persons : NSArray = jsonResult["person"] as? NSArray
                    {
                        // Print the contents of your file
                        print(persons)
                    }
    
                } catch {
                    print("Problem converting jsonResult to dictionary")
                }
            }
        }
    

    它在Swift和Objective-C中都是相同的过程。

答案 1 :(得分:0)

一旦你拖动&删除项目中的文件,该文件将放入您的应用程序包中。因此,您需要在应用程序包上获取文件的路径。

NSString* path = [[NSBundle mainBundle] pathForResource:@"Areafiles" ofType:@"json"];

现在您已准备好将其内容加载到字符串

NSString* content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

然后你想从该字符串中获取字典

NSArray *json = [NSJSONSerialization JSONObjectWithData:[content dataUsingEncoding:NSUTF8StringEncoding] options: NSJSONReadingMutableContainers error:&error];

答案 2 :(得分:0)

档案 - > NSData的

// get path to the file
NSString *path = [[NSBundle mainBundle]pathForResource:@"Areafiles" 
                                             ofType:@"json"];
// NSData from the filepath
NSData *fileData = [NSData dataWithContentsOfFile:path];

NSData - >的NSDictionary

NSError* error;
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:fileData
                                                          options:kNilOptions
                                                            error:&error];
if (error == nil) {
      NSLog(@"%@", jsonDict);
      return jsonDict;
}
else {
    NSLog(@"Error reading JSON file");
    return nil;
}