标签: nsjsonserialization

使用Swift读取JSON文件

我真的很想尝试将一个JSON文件读入Swift,所以我可以玩它.我已经花了2天的时间重新搜索和尝试不同的方法,但没有运气,所以我已经注册StackOverFlow,看看是否有人可以指出我正确的方向.....

我的JSON文件名为test.json,包含以下内容:

{
  "person":[
     {
       "name": "Bob",
       "age": "16",
       "employed": "No"
     },
     {
       "name": "Vinny",
       "age": "56",
       "employed": "Yes"
     }
  ]
}    
Run Code Online (Sandbox Code Playgroud)

该文件直接存储在文档中,我使用以下代码访问它:

let file = "test.json"
let dirs : String[] = NSSearchPathForDirectoriesInDomains(
                                                          NSSearchpathDirectory.DocumentDirectory,
                                                          NSSearchPathDomainMask.AllDomainMask,
                                                          true) as String[]

if (dirs != nil) {
    let directories: String[] = dirs
    let dir = directories[0]
    let path = dir.stringByAppendingPathComponent(file)
}

var jsonData = NSData(contentsOfFile:path, options: nil, error: nil)
println("jsonData \(jsonData)" // This prints what looks to be JSON encoded data.

var jsonDict = …
Run Code Online (Sandbox Code Playgroud)

xcode json nsjsonserialization swift ios8

174
推荐指数
17
解决办法
19万
查看次数

如何将JSON字符串转换为字典?

我想在我的swift项目中创建一个函数,将String转换为Dictionary json格式,但是我遇到了一个错误:

无法转换表达式的类型(@lvalue NSData,选项:IntegerLitralConvertible ...

这是我的代码:

func convertStringToDictionary (text:String) -> Dictionary<String,String> {

    var data :NSData = text.dataUsingEncoding(NSUTF8StringEncoding)!
    var json :Dictionary = NSJSONSerialization.JSONObjectWithData(data, options:0, error: nil)
    return json
} 
Run Code Online (Sandbox Code Playgroud)

我在Objective-C中创建了这个函数:

- (NSDictionary*)convertStringToDictionary:(NSString*)string {
  NSError* error;
  //giving error as it takes dic, array,etc only. not custom object.
  NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
  id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
  return json;
}
Run Code Online (Sandbox Code Playgroud)

json dictionary nsjsonserialization swift

156
推荐指数
7
解决办法
20万
查看次数

无法将"NSTaggedPointerString"类型的值转换为"NSNumber"

我有一个像这样的Swift结构.

struct Usage {
    var totalData: Double
    var remainingTotalData: Double

    init(jsonData: NSData) {
        var jsonDict = [String: AnyObject]()

        do {
            jsonDict = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as! [String: AnyObject]
        } catch {
            print("Error occurred parsing data: \(error)")
        }

        totalData = jsonDict["totalfup"] as! Double
        remainingTotalData = jsonDict["totalrem"] as! Double
    }
}
Run Code Online (Sandbox Code Playgroud)

从API,我得到以下JSON响应.这是jsonDict变量的println .

[
    "totalfup": 96.340899, 
    "totalrem": 3548710948
]
Run Code Online (Sandbox Code Playgroud)

当我尝试将totalfup属性的值分配给属性时totalData,我收到此错误.

无法将"NSTaggedPointerString"类型的值转换为"NSNumber"

谁知道为什么?我尝试将属性类型更改为float然后将整个结构更改为类但仍然会出现问题.

double ios nsjsonserialization swift

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

来自NSString的NSJSONSerialization

如果我有一个NSString并且我想使用NSJSONSerialization吗?我该怎么做呢?

iphone objective-c ipad ios nsjsonserialization

43
推荐指数
2
解决办法
5万
查看次数

如何通过NSJSONSerialization在JSON中包含空值?

我想我知道如何使用NSJSONSerialization.我正在打电话的是:

[NSJSONSerialization dataWithJSONObject:parameters options:0 error:&error]
Run Code Online (Sandbox Code Playgroud)

其中parameters是一个NSDictionary,其中包含要在JSON请求中使用的键和值.一切都很好,直到我必须使用null作为值而不是空字符串.我找不到将值设置为null的方法.我需要创建的json示例是:

{"target"
  {"firstname":<firstname>,
   "lastname":<lastname>},
 "error":null
}
Run Code Online (Sandbox Code Playgroud)

设置服务器的方式是,如果没有错误,它会将错误视为字符串或null.

有任何想法吗?我错过了API调用或类似的东西吗?

谢谢!

null json objective-c ios nsjsonserialization

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

如何防止NSJSONSerialization在URL中添加额外的转义

如何防止NSJSONSerialization在我的URL字符串中添加额外的反斜杠?

NSDictionary *info = @{@"myURL":@"http://www.example.com/test"};
NSData data = [NSJSONSerialization dataWithJSONObject:info options:0 error:NULL];
NSString *string = [[NSString alloc] initWithData:policyData encoding:NSUTF8StringEncoding];
NSLog(@"%@", string);//{"myURL":"http:\/\/www.example.com\/test"}
Run Code Online (Sandbox Code Playgroud)

我可以去除反斜杠并使用该字符串,但如果可能的话我想跳过这一步......

objective-c nsjsonserialization

26
推荐指数
3
解决办法
1万
查看次数

NSJSONSerialization生成NSCFString*和NSTaggedPointerString*

在以下json上执行NSJSONSerialization有时会给我NSCFString*,有时在字符串值上给我NSTaggedPointerString*.有谁知道为什么会这样,NSJSONSerialization用什么来确定它返回哪种类型?

jsonData = [NSJSONSerialization JSONObjectWithData:data
                                                   options:kNilOptions
                                                     error:&parseError];

    {
      "UserPermissionsService": {
        "ServiceHeader": {}, 
        "UserApplicationPermissions": {
          "ApplicationPermissions": {
            "ApplicationID": "TEST", 
            "Permission": [
              {
                "Locations": [
                  "00000"
                ], 
                "PermissionID": "LOGIN"
              }, 
              {
                "Locations": [
                  "00000"
                ], 
                "PermissionID": "SALES_REPORT_VIEW"
              }
            ]
          }
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

"LOGIN"以NSTaggedPointerString*的形式返回."SALES_REPORT_VIEW"返回的是一个NSCFString*.这对我正在使用和投射值的下游产生影响.

UPDATE

这是我学到的......

"当整个值可以保存在指针本身而不分配任何数据时,会产生NSTaggedPointerString."

这里有一个详细的解释......

https://www.mikeash.com/pyblog/friday-qa-2015-07-31-tagged-pointer-strings.html

由于NSTaggedPointerString是NSString的子类,因此显示引号/不显示引号对我来说永远不会成为问题,因为使用了数据.

感谢所有评论的人.我很自在地理解NSJSONSerialization在做什么.

json objective-c nsstring foundation nsjsonserialization

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

如何在objective-c中创建json

NSData* jsonDataToSendTheServer;

NSDictionary *setUser = [NSDictionary
            dictionaryWithObjectsAndKeys:[@"u" stringByAppendingString:my.id],@"id",
                                        @"GET_USER_INFO",@"command",
                                        @"",@"value",
                                        nil];

 NSLog(@"%@", jsonDataToSendTheServer);
Run Code Online (Sandbox Code Playgroud)

这是我的代码.当我运行上面的代码时,我得到了这个打印

<7b226964 223a2275 35383738 37373334 31222c22 636f6d6d 616e6422 3a224745 545f5553 45525f49 4e464f22 2c227661 6c756522 3a22227d>
Run Code Online (Sandbox Code Playgroud)

我不知道我是否可以创建一个json.

我怎样才能解决这个问题?

json objective-c ios nsjsonserialization

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

Swift,NSJSONSerialization和NSError

问题是当数据不完整NSJSONSerialization.JSONObjectWithData导致应用程序崩溃unexpectedly found nil while unwrapping an Optional value而不是通知我们使用NSError变量时.所以我们无法阻止崩溃.

您可以在下面找到我们正在使用的代码

      var error:NSError? = nil

      let dataToUse = NSJSONSerialization.JSONObjectWithData(receivedData, options:   NSJSONReadingOptions.AllowFragments, error:&error) as NSDictionary

    if error != nil { println( "There was an error in NSJSONSerialization") }
Run Code Online (Sandbox Code Playgroud)

直到现在我们都无法找到解决方法.

nserror nsjsonserialization swift

17
推荐指数
2
解决办法
3万
查看次数

Swift 2中的HTTP POST错误处理

我是新来的,这是我的第一个问题......我尝试在Swift 2中编写一个发出HTTP POST请求的应用程序,但我无法弄清楚如何使用Swift 2的新错误处理.任何人都可以请告诉我如何在下面的代码片段中实现Swift 2 的" do-try-catch "错误处理?(此代码段使用swift 1.2的旧错误处理)

func post(params : Dictionary<String, String>, url : String) {
    var request = NSMutableURLRequest(URL: NSURL(string: url)!)
    var session = NSURLSession.sharedSession()
    request.HTTPMethod = "POST"

    var err: NSError?
    request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil/*, error: &err*/)
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    request.addValue("application/json", forHTTPHeaderField: "Accept")

    var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
        print("Response: \(response)")
        var strData = NSString(data: data!, encoding: NSUTF8StringEncoding)
        print("Body: \(strData)")
        var err: NSError?
        var json = NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves/*, error: &err*/) …
Run Code Online (Sandbox Code Playgroud)

error-handling post http nsjsonserialization swift2

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