Формат JSON с Google Protobuf - PullRequest
       26

Формат JSON с Google Protobuf

1 голос
/ 21 февраля 2020

С этим кодом:

var button = Value.ForStruct(new Struct{
    Fields={
        ["type"] = Value.ForString("postback"),
        ["title"] = Value.ForString("Call Representative"),
        ["payload"] =  Value.ForString("+15105551234"),
    }
});

var inPayload = Value.ForStruct(new Struct{
    Fields ={
        ["buttons"] = Value.ForList(button),
        ["text"] = Value.ForString("try the postback"),
        ["template_type"] = Value.ForString("button"),
    }
});

var attachment = Value.ForStruct(new Struct{
    Fields ={
        ["payload"] = inPayload,
        ["type"] = Value.ForString("template"),
    }
});

var msg = Value.ForStruct(new Struct{
    Fields ={
        ["attachment"] = attachment,
    });

Payload = new Struct{
    Fields ={
        ["facebook"] = msg
    }

Мне удалось создать следующее json:

"payload":    {
      "facebook": {"attachment":       {
         "payload":          {
            "buttons": [            {
               "type": "postback",
               "title": "Call Representative",
               "payload": "+15105551234"
            }],
            "text": "try the postback",
            "template_type": "button"
         },
         "type": "template"
      }}

Теперь мне нужно создать следующий другой формат, но я не могу найти, как чтобы сделать это:

"payload":    {
         "message": "Yes I did it"
         "platform": "kommunicate",
         "attachment":       {
             "payload":          {
                "buttons": [            {
                   "type": "postback",
                   "title": "Call Representative",
                   "payload": "+15105551234"
                }],
                "text": "try the postback",
                "template_type": "button"
             },
             "type": "template"
          }

Я действительно не могу найти, как устранить первый "facebook": {элемент и оставить только:

  {
    "message": "Yes I did it",
    "platform": "kommunicate",
    "attachment":

И включить сообщение и платформу на одном уровне , Вот полный json, который я хотел бы сгенерировать:

"payload":    {
   "platform": "kommunicate",
   "message": "Yes I did it",
   "attachment":       {
         "payload":          {
            "buttons": [            {
               "type": "postback",
               "title": "Call Representative",
               "payload": "+15105551234"
            }],
            "text": "try the postbackggggggg",
            "template_type": "button"
         },
         "type": "template"
      }

1 Ответ

1 голос
/ 21 февраля 2020

Если вы хотите взять объект и преобразовать его в json, я бы порекомендовал взглянуть на Newtonsoft Json. Net library . У них есть множество примеров , которые могут вам помочь. Существует также protobuf. * ​​1015 * библиотека для сериализации в protobuf вместо json.

Обе библиотеки используются одинаково, вы создаете класс с соответствующими свойствами и устанавливаете значения ты хочешь. Вам понадобится несколько классов для вложенных типов, как в вашем примере. Protobuf требует, чтобы вы аннотировали свойства атрибутами, в то время как это необязательно для json. net. Затем вы отправляете объект в библиотеку сериализации и получаете строку или двоичные данные, представляющие ваш объект. Этот тип объекта часто называют объектом передачи данных (DTO) , поскольку единственная цель, которую он имеет, состоит в том, чтобы помочь в сериализации или передаче данных в другую систему.

...