当文件包含多个JSON时,从资产中读取JSON

时间:2016-10-20 11:03:13

标签: android json file android-studio assets

如何从包含多个JSON的文件中读取JSON?

我的意思是,我看起来像这样:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let currentCellDescriptor = getCellDescriptorForIndexPath(indexPath)
    let cell = tableView.dequeueReusableCellWithIdentifier(currentCellDescriptor["cellIdentifier"] as! String, forIndexPath: indexPath) as! CustomCell

    if currentCellDescriptor["cellIdentifier"] as! String == "idCellNormal" {
        if let primaryTitle = currentCellDescriptor["primaryTitle"] {
            cell.textLabel?.text = primaryTitle as? String
        }

        if let secondaryTitle = currentCellDescriptor["secondaryTitle"] {
            cell.detailTextLabel?.text = secondaryTitle as? String
        }
    }
    else if currentCellDescriptor["cellIdentifier"] as! String == "idCellTextfield" {
        cell.textField.placeholder = currentCellDescriptor["primaryTitle"] as? String
    }
    else if currentCellDescriptor["cellIdentifier"] as! String == "idCellSwitch" {
        cell.lblSwitchLabel.text = currentCellDescriptor["primaryTitle"] as? String

        let value = currentCellDescriptor["value"] as? String
        cell.swMaritalStatus.on = (value == "true") ? true : false
    }
    else if currentCellDescriptor["cellIdentifier"] as! String == "idCellValuePicker" {
        cell.textLabel?.text = currentCellDescriptor["primaryTitle"] as? String
    }
    else if currentCellDescriptor["cellIdentifier"] as! String == "idCellSlider" {
        let value = currentCellDescriptor["value"] as! String
        cell.slExperienceLevel.value = (value as NSString).floatValue
    }

    return cell
}

E.g。我想得到一个JSON数组或一个机会来读取1号或4号JSON。

2 个答案:

答案 0 :(得分:0)

以上json格式错误。 正确的json格式是

[{
  "status": false,
  "info": "The email field is required."
},
{
  "status": false,
  "info": "The email field is required."
},
{
  "status": false,
  "info": "The email field is required."
},
{
  "status": false,
  "info": "The email field is required."
},
{
  "status": false,
  "info": "The email field is required."
},
{
  "status": false,
  "info": "The email field is required."
}]

这可以作为JSONArray

获取

答案 1 :(得分:0)

如果你可以依赖你所描述的结构,那么这里最简单的解决方案就是将它分成两个连续的 新行 字符,它们将为你提供单独的对象然后可以通过传统方式解析,即。新的JSONObject()...

但是如果你得到的文件没有生成并且可能存在人为错误,那么自动执行这样的过程真的很危险...更安全,但开发成本更高的是通过检查对来构建对象封闭{ }个字符..你可以从找到第一个开始括号开始,然后在每个下一个连续的开始括号中忽略一个闭合,直到你关闭根对象。这可以通过递归轻松完成

这仍然是防弹的 ,但是JSONObject构造函数的最终解析会检测到潜在的错误