相关疑难解决方法(0)

如何使用Swift Decodable协议解码嵌套的JSON结构?

这是我的JSON

{
    "id": 1,
    "user": {
        "user_name": "Tester",
        "real_info": {
            "full_name":"Jon Doe"
        }
    },
    "reviews_count": [
        {
            "count": 4
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

这是我想要保存的结构(不完整)

struct ServerResponse: Decodable {
    var id: String
    var username: String
    var fullName: String
    var reviewCount: Int

    enum CodingKeys: String, CodingKey {
       case id, 
       // How do i get nested values?
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经查看了Apple的解码嵌套结构的文档,但我仍然不明白如何正确地执行不同级别的JSON.任何帮助都感激不尽.

json swift swift4 codable

71
推荐指数
5
解决办法
3万
查看次数

Bundle.main.path(forResource:ofType:inDirectory :)返回nil

尽量不要笑或哭 - 我只是在20年后重新开始编码......

我花了4个多小时查看引用并尝试使用代码片段来获取Bundle.main.path来打开我的文本文件所以我可以读取我的应用程序的数据(我的下一步是适当地解析它).

if let filepath = Bundle.main.path(forResource: "newTest", ofType: "txt")
{
    do
    {
        let contents = try String(contentsOfFile: filepath)
        print(contents)

    }
    catch
    {
        print("Contents could not be loaded.")
    }
}
else
{
    print("newTest.txt not found.")
}
Run Code Online (Sandbox Code Playgroud)

结果是:"找不到newTest.txt." 无论我如何尝试将文件拖放到项目中,在Xcode中创建文件或使用文件 - >添加文件到...菜单项.

macos file ios swift swift3

64
推荐指数
8
解决办法
5万
查看次数

使用Swift 3读取JSON文件

我有一个名为points.json的JSON文件,以及一个读取函数,如:

private func readJson() {
    let file = Bundle.main.path(forResource: "points", ofType: "json")
    let data = try? Data(contentsOf: URL(fileURLWithPath: file!))
    let jsonData = try? JSONSerialization.jsonObject(with: data!, options: []) as! [String:Any]
    print(jsonData)
}
Run Code Online (Sandbox Code Playgroud)

它不起作用,有什么帮助吗?

json swift3

35
推荐指数
2
解决办法
4万
查看次数

如何读取本地JSON文件以进行测试

我正在尝试为json验证编写单元测试(因为app严重依赖于来自其余API的json).

我有一个包含简单json的本地文件:"goodFeaturedJson.txt"

内容:

{
  "test": "TEST"
}
Run Code Online (Sandbox Code Playgroud)

测试用例:

- (void)testJsonIsValid
{
    Featured *featured = [Featured new];

    NSString* filepath = [[NSBundle mainBundle]pathForResource:@"goodFeaturedJson" ofType:@"text"];

    NSData *data = [NSData dataWithContentsOfFile:filepath];

    NSString *jsonString = [[NSString alloc] initWithContentsOfFile:filepath encoding:NSUTF8StringEncoding error:nil];//[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    NSLog(@"The json string is: %@", jsonString);

    id JSON = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

    STAssertTrue([featured jsonIsValid:JSON], @"Featured Data is NOT valid...");    
}
Run Code Online (Sandbox Code Playgroud)

每次测试失败.控制台打印:

The json string is: (null)
Run Code Online (Sandbox Code Playgroud)

为什么?我知道为什么测试失败了,因为很明显,如果数据是nil/null,那么就没有有效的json,并且验证器将会中断(如果它无效则应该中断).

我必须在这里找到一些简单的东西,任何想法?

parsing json objective-c ios sentestingkit

15
推荐指数
2
解决办法
1万
查看次数

如何使用SwiftyJSON从文件中检索数据

我在我的文件系统中添加了一个JSON文件,其中数据结构如下:

{"DDD":"3D Systems Corporation","MMM":"3M Company","WBAI":"500.com Limited","WUBA":"58.com Inc.","AHC":"AH Belo公司","ATEN":"A10 Networks,Inc.","AAC":"AAC Holdings,Inc.","AIR":"AAR Corp." }

我的文件名是stockDict.json,我正在尝试使用此代码从中检索数据:

let jsonFilePath:NSString = NSBundle.mainBundle().pathForResource("stockDict", ofType: "json")!
        let jsonData:NSData = NSData.dataWithContentsOfMappedFile(jsonFilePath as String) as! NSData
        let error:NSError?
        let json = JSON(jsonData)

        println(json[0][0].string)
Run Code Online (Sandbox Code Playgroud)

但是我打印的所有内容都是nil.我的代码出了什么问题?

任何建议,将不胜感激.

json swift swifty-json

8
推荐指数
3
解决办法
7749
查看次数

添加JSON作为资产并阅读它

我正在尝试从本地文件加载一些JSON数据.

这篇Apple文档中,它说:

使用资产目录管理应用程序的数据文件.文件可以包含除Xcode生成的设备可执行代码之外的任何类型的数据.您可以将它们用于JSON文件,脚本或自定义数据类型

所以我添加了一个新的数据集并将JSON文件放入其中.现在我可以在Assets.xcassets文件夹下看到它(Colours.dataset文件夹里面有colours.json和Contents.json)

我发现这个 SO答案显示了如何读取JSON文件,我正在使用此代码来读取文件:

if let filePath = NSBundle.mainBundle().pathForResource("Assets/Colours", ofType: "json"), data = NSData(contentsOfFile: filePath) {

        print (filePath)

        do {
            let json = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments)
            print(json)
        }
        catch {

        }
    } else {
        print("Invalid file path")
    }
Run Code Online (Sandbox Code Playgroud)

但是此代码正在打印"无效的文件路径"而不是读取文件.我也试过"颜色"和"Colours.json",但无济于事.

谁能告诉我如何正确添加本地JSON文件并阅读它?

谢谢.

ios swift

7
推荐指数
1
解决办法
8250
查看次数

阻止 WKWebView 中加载的 url 中的广告

我正在 webView 中加载 url,现在我想阻止 webView 中的 url 中的广告。我怎样才能实现这个目标?

[_webVw loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:page_url]]];
Run Code Online (Sandbox Code Playgroud)

xcode objective-c adblock nsurlrequest wkwebview

2
推荐指数
1
解决办法
6303
查看次数

在XCUITest中读取本地JSON文件

我正在为iOS应用程序编写UI测试。我想从本地json文件读取数据。

我正在使用以下代码来获取json文件的路径:

func testExample() {

    readJSON()
}

func readJSON(){
    let bundle = Bundle(for:myTestClass.self)
    if let path = bundle.url(forResource: "myurl", withExtension: "json"){
        print("Got the path")
        print(path)
    }
    else{
        print("Invalid filename/path")
    }
Run Code Online (Sandbox Code Playgroud)

我已尝试将解决方案用于以下stackoverflow问题: 使用Swift读取JSON文件。没工作!

另外,我查看了以下Apple文档:https : //developer.apple.com/swift/blog/?id=37

任何帮助将不胜感激!

json ios xctest swift3 xcode8.2

1
推荐指数
1
解决办法
1332
查看次数

如何解析本地文件中的json数据?

我对json解析非常陌生,并尝试解析具有汽车列表的json文件,但是当我解析时,它给出nil

    func jsonTwo(){
    let url = Bundle.main.url(forResource: "car_list", withExtension: "json")!
    let data = try! Data(contentsOf: url)
    let JSON = try! JSONSerialization.jsonObject(with: data, options: []) as? [String : Any]
    print(".........." , JSON , ".......")
    let brand = JSON?["models"] as? [[String : Any]]
    print("=======",brand,"=======")
}
Run Code Online (Sandbox Code Playgroud)

当我如下修改此代码时

    func jsonTwo(){
    let url = Bundle.main.url(forResource: "car_list", withExtension: "json")!
    let data = try! Data(contentsOf: url)
    let JSON = try! JSONSerialization.jsonObject(with: data, options: []) 
    print(".........." , JSON , ".......")
    let brand = JSON["brand"] as? [[String : Any]] …
Run Code Online (Sandbox Code Playgroud)

api json nsdictionary ios swift

1
推荐指数
2
解决办法
917
查看次数