custom_attributes
, value
- массивы
Alamofire.request("http://adorableprojects.store/rest/V1/detailProduct/configurable-product").responseJSON { (responseData) -> Void in
if((responseData.result.value) != nil) {
let swiftyJsonVar = JSON(responseData.result.value!).dictionaryValue
if let resData = swiftyJsonVar["custom_attributes"]?.arrayValue , let sec = resData.first?.dictionaryValue["value"]?.arrayValue , let color = sec.first?.dictionaryValue["color"]?.arrayValue {
print("dhjjhdhdsjhdsjdshjdsjhds ",color)
}
else {
}
}
}
Редактировать : доступ к размеру
Alamofire.request("http://adorableprojects.store/rest/V1/detailProduct/configurable-product").responseJSON { (responseData) -> Void in
if((responseData.result.value) != nil) {
let swiftyJsonVar = JSON(responseData.result.value!).dictionaryValue
if let resData = swiftyJsonVar["custom_attributes"]?.arrayValue , let sec = resData.first?.dictionaryValue["value"]?.arrayValue , let color = sec[1].dictionaryValue["size"]?.arrayValue {
print("dhjjhdhdsjhdsjdshjdsjhds ",size)
}
else {
}
}
}
между прочим рекомендовать
struct Root: Codable {
let customAttributes: [CustomAttribute]
enum CodingKeys: String, CodingKey {
case customAttributes = "custom_attributes"
}
}
struct CustomAttribute: Codable {
let attributeCode: String
let value: [Value]
enum CodingKeys: String, CodingKey {
case attributeCode = "attribute_code"
case value
}
}
struct Value: Codable {
let color: [Color]
}
struct Color: Codable {
let valueIndex, label, productSuperAttributeID, defaultLabel: String
let storeLabel: String
let useDefaultValue: Bool
enum CodingKeys: String, CodingKey {
case valueIndex = "value_index"
case label
case productSuperAttributeID = "product_super_attribute_id"
case defaultLabel = "default_label"
case storeLabel = "store_label"
case useDefaultValue = "use_default_value"
}
}
Буферный проект Протокола определенно не является закрытым исходным кодом.
Каким языком/платформой интересуются Вы?
Обратите внимание, что, хотя существует тупиковая поддержка RPC в Буферах Протокола, Google не выпустил свой фактический уровень RPC, таким образом, необходимо было бы обеспечить собственное. Учитывая, что в основном Вы передали бы сообщение запроса и возвратили бы ответное сообщение, дело не в этом трудно для разделения на уровни его по существующим протоколам (например, СООБЩЕНИЕ HTTP).
Вполне возможно не лучший кандидат, но для пользы полноты я хотел бы добавить, что существует двоичное кодирование для XML.
Я не думаю, что Буферы Протокола являются закрытым исходным кодом. Страница подразумевает по-другому, и существуют исходные загрузки.
Вы могли посмотреть на ASN.1.
Это используется для кодирования и передачи двоичных данных во многих других протоколах (например, SNMP, LDAP), хотя ASN.1 самостоятельно не определяет транспортный протокол.
Я предложил бы, чтобы Вы пересмотрели Google Protocol Buffers. Существует много реализаций с открытым исходным кодом для всех основных платформ, включая C++/Java/Python один опубликованный самим Google.
Поскольку это было упоминание Jon Skeet выше, спецификация ПБ не определяет модель RPC, но чрезвычайно легко определить Ваш собственный RPC с помощью ПБ.
С другой стороны, Вы могли смотреть на ASN.1. Существует тонна приложений то использование ASN.1.
UBF Joe Armstrong, кажется, не завоевал популярность, но он удовлетворяет Ваши требования сделанным со вкусом дизайном.
Я рекомендовал бы испытать RabbitMQ AMQP и использовать Буферы Протокола, XML, или некоторый другой формат данных, такие как JSON, для дегустации. В дополнение к тому, чтобы быть относительно простым и легким для начала работы с это позволяет Вам смешивание и подгонка RPC и асинхронные стили pubsub, и имеет хорошее распространение через языки, протоколы и платформы. Но это не может быть подходящим вариантом для Вашей проблемы - все это зависит, что Вы пытаетесь сделать! С наилучшими пожеланиями, alexis
Существует патч от ZeroC до Льда для поддержки Google Protocol Buffers исходно.