Json有值,但它返回null / nill

时间:2019-07-29 11:54:39

标签: ios swift alamofire swifty-json

这是初始响应

{
    message = "{\n    \"classesToTeach\":[\n        \"Primary\", \"Secondary\", \"Higher Secondary\", \"Admission\"\n    ],\n    \"subcategories\":{\n        \"Academics\":[\n            \"Cambridge\", \"Edexcel\", \"IB\", \"GRE\", \"SAT\", \"American\", \"Australian\", \"National Bangla Medium\", \"National English Version\", \"Madrasa\"\n        ],\n        \"Music\":[\n            \"Guitar\", \"Vocal\", \"Drums\", \"Keyboard\", \"Tabla\", \"Flute\", \"Harmonium\", \"Violin\", \"Ukulele\"\n        ],\n        \"Languages\":[\n            \"English\", \"Bangla\", \"French\", \"Spanish\", \"German\", \"Chinese\", \"Arabic\", \"Hindi\"\n        ],\n        \"IT\":[\n            \"Programming\", \"SEO\", \"Graphics Designing\", \"Web Development\", \"Video Editing\"\n        ],\n        \"Cooking\":[\n            \"Bangla\", \"Indian\", \"Thai\", \"Chinese\", \"Continental\", \"Baking\"\n        ],\n        \"Sports\":[\n            \"Football\", \"Basketball\", \"Cricket\", \"Lawn tennis\", \"Table tennis\", \"Archery\", \"Chess\", \"Badminton\", \"Swimming\", \"Cycling\", \"Billiard\", \"Fitness\"\n        ],\n        \"Fine Arts\":[\n            \"Drawing and Painting\", \"Sculpture\"\n        ],\n        \"Driving\":[\n            \"Car\", \"Motorcycle\"\n        ],\n        \"Religion\":[\n            \"Islam\", \"Christianity\", \"Buddhism\", \"Hinduism\"\n        ],\n        \"Dancing\":[\n            \"Classical\", \"Salsa\", \"Hiphop\", \"Tango\"\n        ]\n    },\n    \"subjects\":[\n        \"English\", \"English Literature\", \"Bangla\", \"General Science\", \"Mathematics\", \"Further/Higher Mathematics\",\n         \"Physics\", \"Chemistry\", \"Biology\", \"Economics\", \"Accounting\", \"Business Studies\", \"Commerce\", \"Geography\",\n         \"History\", \"ICT\", \"Social Science\", \"Religious Studies\", \"Bangladesh and Global Studies\"\n    ]\n}\n";
}

首先,我解析“消息”。然后我得到了一个像这样的杰森:

{
    "classesToTeach":[
        "Primary", "Secondary", "Higher Secondary", "Admission"
    ],
    "subcategories":{
        "Academics":[
            "Cambridge", "Edexcel", "IB", "GRE", "SAT", "American", "Australian", "National Bangla Medium", "National English Version", "Madrasa"
        ],
        "Music":[
            "Guitar", "Vocal", "Drums", "Keyboard", "Tabla", "Flute", "Harmonium", "Violin", "Ukulele"
        ],
        "Languages":[
            "English", "Bangla", "French", "Spanish", "German", "Chinese", "Arabic", "Hindi"
        ],
        "IT":[
            "Programming", "SEO", "Graphics Designing", "Web Development", "Video Editing"
        ],
        "Cooking":[
            "Bangla", "Indian", "Thai", "Chinese", "Continental", "Baking"
        ],
        "Sports":[
            "Football", "Basketball", "Cricket", "Lawn tennis", "Table tennis", "Archery", "Chess", "Badminton", "Swimming", "Cycling", "Billiard", "Fitness"
        ],
        "Fine Arts":[
            "Drawing and Painting", "Sculpture"
        ],
        "Driving":[
            "Car", "Motorcycle"
        ],
        "Religion":[
            "Islam", "Christianity", "Buddhism", "Hinduism"
        ],
        "Dancing":[
            "Classical", "Salsa", "Hiphop", "Tango"
        ]
    },
    "subjects":[
        "English", "English Literature", "Bangla", "General Science", "Mathematics", "Further/Higher Mathematics",
         "Physics", "Chemistry", "Biology", "Economics", "Accounting", "Business Studies", "Commerce", "Geography",
         "History", "ICT", "Social Science", "Religious Studies", "Bangladesh and Global Studies"
    ]
}

我试图通过使用SwiftyJSON访问classesToTeach或其他属性。它返回nil / null。你能帮我吗?

Alamofire.request(url, method: .get, parameters: nil,encoding: JSONEncoding.default, headers: headers)
     .responseJSON { response in

         let json = JSON(response.result.value!);
         let message = JSON(json["message"])

         print(json["message"])
         print(message["classesToTeach"])     
}

无/空

1 个答案:

答案 0 :(得分:3)

阅读SwiftyJSON的文档是值得的。在init(_ object: Any)的说明中有一条注释:

  
      
  • 注意:这不会将String解析为JSON,而是使用init(parseJSON: String)
  •   
let message = JSON(parseJSON: json["message"].stringValue)