2017-03-22 133 views
1

我有一些錯誤不..已瞭解好 我送這個代碼JSON解析錯誤斯威夫特3

JSONARRAY { 
JSON, 
JSONARRAY, 
JSONARRAY 
} 

Y的這一點,但沒有工作或沒有正確解析,無論用於在這兩個陣列不加入任何東西

buscarEmpresa=[ 

"{\n \"criterio\" : \"fru\",\n \"tipo\" : \"0\",\n \"idempresa\" : \"82\"\n}", 
    [ 

    ], 
    [ 

    ] 
] 

數據無法被讀取,因爲它的格式不正確。

試試這個代碼..

let usuario = UsuarioSQL.getUsuario()! 
var jArray: [AnyObject] = [] 

let jUsuario = NSMutableDictionary() 
jUsuario.setValue((phBuscar.text?.trimmingCharacters(in: .whitespacesAndNewlines))!, forKey: "criterio") 
jUsuario.setValue(String(describing: usuario.tipo_negocio), forKey: "tipo") 
jUsuario.setValue(String(describing: usuario.id_server), forKey: "idempresa") 
let jData = try! JSONSerialization.data(withJSONObject: jUsuario, options: .prettyPrinted) 
let jStr = NSString(data: jData, encoding: String.Encoding.utf8.rawValue) as! String 
jArray.append(jStr as AnyObject) 

let jaEmpresarial = NSMutableArray() 
for i in receive_empresarial { 
      let jEmpresarial = NSMutableDictionary() 
      jEmpresarial.setValue(i, forKey: "empresarial") 
      jaEmpresarial.add(jEmpresarial) 
} 
jArray.append(jaEmpresarial) 

let jaPais = NSMutableArray() 
for i in receive_paises { 
     let jPais = NSMutableDictionary() 
     jPais.setValue(i, forKey: "pais") 
     jaPais.add(jPais) 
} 
jArray.append(jaPais) 


let post = try! JSONSerialization.data(withJSONObject: jArray, options: .prettyPrinted) 
let jPost = NSString(data: post, encoding: String.Encoding.utf8.rawValue) as! String 

let sesion = URLSession.shared 
let parameters = "buscarEmpresa=\(jPost)" 
print(parameters) 
+0

上面的代碼本身似乎工作正常。你從哪裏得到錯誤?另外,最好在Swift代碼中使用類型信息超過NSArray和NSDictionary的Swift數組和字典... – Fahim

+0

好了,但請教一些教程或示例嗎? – marlonpya

+1

查看我的答案更新 - 我添加了一些基於代碼輸出的有效JSON。 – Fahim

回答

1

所生成的數據是無效的JSON。這可能是你得到錯誤的原因。您可以驗證這使用JSON驗證,如果你想,但是這取決於你想如何設置的事情,你可能希望此行JSON的:

{\n \"criterio\" : \"some criteria\",\n \"tipo\" : \"Type\",\n \"idempresa\" : \"ID\"\n} 

的代表作爲您的JSON對象中的鍵值對,或者作爲一個鍵的值。像這樣的東西是有效的:

{ 
    "criterio": "some criteria", 
    "tipo": "Type", 
    "idempresa": "ID", 
    "empresarial": [{ 
     "empresarial": 1 
    }, { 
     "empresarial": 2 
    }, { 
     "empresarial": 3 
    }, { 
     "empresarial": 4 
    }], 
    "pais": [{ 
     "pais": 10 
    }, { 
     "pais": 20 
    }, { 
     "pais": 30 
    }] 
} 

您可以使用此JSON validator,以驗證自己的JSON。

+0

謝謝你的回答 – marlonpya

0

是朋友,我已經解決了吧..有改變

這不是爲我工作,所以要改變..

let usuario = UsuarioSQL.getUsuario()! 
var jArray: [AnyObject] = [] 
    let jUsuario = NSMutableDictionary() 
    jUsuario.setValue((phBuscar.text?.trimmingCharacters(in: .whitespacesAndNewlines))!, forKey: "criterio") 
    jUsuario.setValue(String(describing: usuario.tipo_negocio), forKey: "tipo") 
    jUsuario.setValue(String(describing: usuario.id_server), forKey: "idempresa") 
    let jData = try! JSONSerialization.data(withJSONObject: jUsuario, options: .prettyPrinted) 
    let jStr = NSString(data: jData, encoding: String.Encoding.utf8.rawValue) as! String 
    jArray.append(jStr as AnyObject) 

這個工作對我罰款

let usuario = UsuarioSQL.getUsuario()! 
     var jArray: [AnyObject] = [] 
     let jUser: NSMutableDictionary = [ 
      "criterio" : String(describing: phBuscar.text!.trimmingCharacters(in: .whitespacesAndNewlines)), 
      "tipo" : String(usuario.tipo_negocio), 
      "idempresa" : String(usuario.id_server) 
     ] 
     jArray.append(jUser) 

而且最後我還對我的圈進行了更改

let usuario = UsuarioSQL.getUsuario()! 
    var jArray: [AnyObject] = [] 
    let jUser: NSMutableDictionary = [ 
     "criterio" : String(describing: phBuscar.text!.trimmingCharacters(in: .whitespacesAndNewlines)), 
     "tipo" : String(usuario.tipo_negocio), 
     "idempresa" : String(usuario.id_server) 
    ] 
    jArray.append(jUser) 

    let jaEmpresarial = NSMutableArray() 
    for i in receive_empresarial { 
     let jEmpresarial: NSMutableDictionary = [ 
      "empresarial" : i 
     ] 
     jaEmpresarial.add(jEmpresarial) 
    } 
    jArray.append(jaEmpresarial) 

    let jaPais = NSMutableArray() 
    for i in receive_paises { 
     let jPais:NSMutableDictionary = [ 
      "pais" : i 
     ] 
     jaPais.add(jPais) 
    } 
    jArray.append(jaPais) 

    let post = try! JSONSerialization.data(withJSONObject: jArray, options: .prettyPrinted) 
    let jPost = NSString(data: post, encoding: String.Encoding.utf8.rawValue) as! String 

    let sesion = URLSession.shared 
    let parameters = "buscarEmpresa=\(jPost)" 
    print(parameters) 

謝謝大家的回答,我很欣賞它