Используя swift, я пытаюсь получить доступ к объекту "location" в части "locationConstraint" JSON, которая выглядит следующим образом:
let jsonObj : [String: Any] =
[
"attendees": [
[
"type": "required",
"emailAddress": [
"name": nameOfRoom,
"address": roomEmailAddress
]
]
],
"locationConstraint": [
"isRequired": "true",
"suggestLocation": "false",
"locations": [
[
"displayName": "First Floor Test Meeting Room 1",
"locationEmailAddress": "FirstFloorTestMeetingRoom1@onmicrosoft.com"
],
[
"displayName": "Ground Floor Test Meeting Room 1",
"locationEmailAddress": "GroundFloorTestMeetingRoom1@onmicrosoft.com"
]
//and the rest of the rooms below this..
]
],
"meetingDuration": durationOfMeeting,
]
Я пытаюсь добавить элементы в местоположения извнеэтот метод (для предотвращения повторяющегося кода, так как список местоположений может быть большим) - но у меня возникают проблемы с заменой обратно в эту часть json ..
Мой метод сделать это:
static func setupJsonObjectForFindMeetingTimeAllRoomsTest(nameOfRoom: String, roomEmailAddress: String, dateStartString: String, dateEndString: String, durationOfMeeting: String, locations: [String]) -> [String: Any] {
let jsonObj : [String: Any] =
[
"attendees": [
[
"type": "required",
"emailAddress": [
"name": nameOfRoom,
"address": roomEmailAddress
]
]
],
"meetingDuration": durationOfMeeting
]
let jsonObject = addLocationsToExistingJson(locations:locations, jsonObj: jsonObj)
return jsonObject
}
и мой метод добавления местоположений в существующий объект json:
static func addLocationsToExistingJson(locations: [String], jsonObj: [String: Any]) -> [String: Any] {
var data: [String: Any] = jsonObj
let locConstraintObj = [
"isRequired": "true",
"suggestLocation": "false",
"locations" : []
] as [String : Any]
//try access locationConstraint part of json
data["locationConstraint"] = locConstraintObj
for i in stride(from: 0, to: locations.count, by: 1) {
let item: [String: Any] = [
"displayName": locations[i],
"locationEmailAddress": locations[i]
]
// get existing items, or create new array if doesn't exist
//this line below wrong? I need to access data["locationConstraint]["locations"]
//but an error occurs when i change to the above.. .how do i access it?
var existingItems = data["locations"] as? [[String: Any]] ?? [[String: Any]]()
// append the item
existingItems.append(item)
// replace back into `data`
data["locations"] = existingItems
}
return data
}
Итак, в конечном итоге мой последний работающий объект json должен выглядеть следующим образом:
["meetingDuration": "PT60M", "returnSuggestionReasons": "true", "посетители": [["emailAddress": ["address": "TestUser6@qubbook.onmicrosoft.com", "name": "N"], "type": "required"]] ,imumAttendeePercentage: "100", "locationConstraint": ["location": [["displayName": "Комната для проведения тестов первого этажа 1", "locationEmailAddress": "FirstFloorTestMeetingRoom1@qubbook.onmicrosoft.com "], [" displayName ":" Тест первого этажаt Конференц-зал 1 "," locationEmailAddress ":" GroundFloorTestMeetingRoom1@qubbook.onmicrosoft.com "]]," offerLocation ":" false "," isRequired ":" true "]," timeConstraint ": [" activityDomain ":" неограниченно"," timeslots ": [[" start ": [" dateTime ":" 2019-02-07 14:30:00 "," timeZone ":" UTC "]," end ": [" dateTime ":" 2019-02-07 15:30:00 "," timeZone ":" UTC "]]]]," isOrganizerOptional ":" true "]
Где это выглядит так:
["timeConstraint": ["activityDomain": "неограниченно", "временные интервалы": [["start": ["dateTime": "2019-02-08 08:30:00", "timeZone"":" UTC "]," end ": [" dateTime ":" 2019-02-08 09:30:00 "," timeZone ":" UTC "]]]]," locationConstraint ": [" offerLocation ":"false", "location": [], "isRequired": "true"], "чел.": [["emailAddress": ["address": "TestUser6@qubbook.onmicrosoft.com", "name": "N "]," type ":" required "]]," returnSuggestionReasons ":" true "," isOrganizerOptional ":" true "," minimalAttendeePercentage ":" 100 "," location ": [[" locationEmailAddress ":" FirstFloorTestMeetingRoom1@qubbook.onmicrosoft.com "," displayName ":" FirstFloorTestMeetingRoom1@qubbook.onmicrosoft.com "], [" locationEmailAddress ":" GroundFloorTestMeetingRoom1@qubbook.estmicrosoft.com "," GroundName ":"com "]]," meetingDuration ":" PT60M "]
Где объект местоположений добавляется вне части locationConstraint в JSON. Я знаю, что мне нужен доступ к части locationConstraint моегоjson вот так: var existingItems = data["locationConstraint"]!["locations"] as? [[String: Any]] ?? [[String: Any]]()
но это возвращает ошибку:
Тип "Любой" не имеет подписных элементов
Я впервые работаю с JSON и пытаюсьманипулировать ими в кратчайшие сроки. Как бы я исправить это?