протоколы двоичной синхронной передачи данных общего назначения

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"
    }
}
6
задан Aaron Maenpaa 10 January 2009 в 11:44
поделиться

8 ответов

Буферный проект Протокола определенно не является закрытым исходным кодом.

Каким языком/платформой интересуются Вы?

Обратите внимание, что, хотя существует тупиковая поддержка RPC в Буферах Протокола, Google не выпустил свой фактический уровень RPC, таким образом, необходимо было бы обеспечить собственное. Учитывая, что в основном Вы передали бы сообщение запроса и возвратили бы ответное сообщение, дело не в этом трудно для разделения на уровни его по существующим протоколам (например, СООБЩЕНИЕ HTTP).

14
ответ дан 8 December 2019 в 02:53
поделиться

Вполне возможно не лучший кандидат, но для пользы полноты я хотел бы добавить, что существует двоичное кодирование для XML.

3
ответ дан 8 December 2019 в 02:53
поделиться

Я не думаю, что Буферы Протокола являются закрытым исходным кодом. Страница подразумевает по-другому, и существуют исходные загрузки.

8
ответ дан 8 December 2019 в 02:53
поделиться

Вы могли посмотреть на ASN.1.

Это используется для кодирования и передачи двоичных данных во многих других протоколах (например, SNMP, LDAP), хотя ASN.1 самостоятельно не определяет транспортный протокол.

2
ответ дан 8 December 2019 в 02:53
поделиться

Я предложил бы, чтобы Вы пересмотрели Google Protocol Buffers. Существует много реализаций с открытым исходным кодом для всех основных платформ, включая C++/Java/Python один опубликованный самим Google.

Поскольку это было упоминание Jon Skeet выше, спецификация ПБ не определяет модель RPC, но чрезвычайно легко определить Ваш собственный RPC с помощью ПБ.

С другой стороны, Вы могли смотреть на ASN.1. Существует тонна приложений то использование ASN.1.

3
ответ дан 8 December 2019 в 02:53
поделиться

UBF Joe Armstrong, кажется, не завоевал популярность, но он удовлетворяет Ваши требования сделанным со вкусом дизайном.

2
ответ дан 8 December 2019 в 02:53
поделиться

Я рекомендовал бы испытать RabbitMQ AMQP и использовать Буферы Протокола, XML, или некоторый другой формат данных, такие как JSON, для дегустации. В дополнение к тому, чтобы быть относительно простым и легким для начала работы с это позволяет Вам смешивание и подгонка RPC и асинхронные стили pubsub, и имеет хорошее распространение через языки, протоколы и платформы. Но это не может быть подходящим вариантом для Вашей проблемы - все это зависит, что Вы пытаетесь сделать! С наилучшими пожеланиями, alexis

0
ответ дан 8 December 2019 в 02:53
поделиться

Существует патч от ZeroC до Льда для поддержки Google Protocol Buffers исходно.

http://www.zeroc.com/labs/protobuf/

0
ответ дан 8 December 2019 в 02:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: