2016-11-14 10 views
0

Следующие данные о заказах формата находятся в полезной нагрузке.Полезная нагрузка Mule не отображает правильные данные

{ 
    "orders" : { 
     "order" : [ { 
      "id" : "4358294728", 
      "fulfillment" : { 
       "tracking_number" : "917", 
       "line-items" : { 
        "id" : "8367649608" 
       } 
      } 
     }, { 
      "id" : "4358301768", 
      "fulfillment" : { 
       "tracking_number" : "918", 
       "line-items" : [ { 
        "id" : "8367663240" 
       }, { 
        "id" : "8367663304" 
       }, { 
        "id" : "8367663368" 
       } ] 
      } 
     } ] 
    } 
} 

Я хочу получить общее количество. заказы из этой полезной нагрузки. Я использую # [message.payload.orders.order.size()] для этого. Он дает правильный выход.

Но для одного заказа он дает неправильный выход = 2. Но это будет 1.

{ 
    "orders" : { 
     "order" : { 
      "id" : "4358153416", 
      "fulfillment" : { 
       "tracking_number" : "915", 
       "line-items" : { 
        "id" : "8367362760" 
       } 
      } 
     } 
    } 
} 

Можете ли вы помочь мне, чтобы получить желаемый результат?

ответ

0

Я получаю правильный номер с помощью следующей конфигурации: -

<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/> 
    <flow name="Flow1" > 
    <http:listener config-ref="HTTP_Listener_Configuration" path="/test" doc:name="HTTP"/> 
    <json:json-to-object-transformer doc:name="JSON to Object" returnClass="java.util.HashMap"/> 
    <logger message="Order size #[message.payload.orders.order.size()] " level="INFO" doc:name="Logger"/> 
    <json:object-to-json-transformer doc:name="Object to JSON"/> 
    </flow> 

и да, ваш JSON неверен .. Это должно быть: -

{ 
    "orders" : { 
     "order" :[ { 
      "id" : "4358153416", 
      "fulfillment" : { 
       "tracking_number" : "915", 
       "line-items" : { 
        "id" : "8367362760" 
       } 
      } 
     }] 
    } 
} 

Вы пропустили [ после order

1

Я думаю, что проблема в структуре вашего json. Во втором:

{ 
    "orders" : { 
     "order" : { 
      "id" : "4358153416", 
      "fulfillment" : { 
       "tracking_number" : "915", 
       "line-items" : { 
        "id" : "8367362760" 
       } 
      } 
     } 
    } 
} 

Элемент order не является массивом, так что это дает «2», как результат, поскольку он имеет два элемента внутри него: id и fullfillment.

Вы можете решить эту проблему, имея ваш JSON правильно генерироваться, было бы, как это (проверка де «[]»):

{ 
    "orders" : { 
     "order" : [{ 
      "id" : "4358153416", 
      "fulfillment" : { 
       "tracking_number" : "915", 
       "line-items" : { 
        "id" : "8367362760" 
       } 
      } 
     }] 
    } 
} 

Кроме того, элемент order не должен быть явным. Вам просто нужен массив orders. Оригинал json должен быть:

{ 
    "orders" : [ 
     { 
      "id" : "4358294728", 
      "fulfillment" : { 
       "tracking_number" : "917", 
       "line-items" : { 
        "id" : "8367649608" 
       } 
      } 
     }, 
     { 
      "id" : "4358301768", 
      "fulfillment" : { 
       "tracking_number" : "918", 
       "line-items" : [ { 
        "id" : "8367663240" 
       }, { 
        "id" : "8367663304" 
       }, { 
        "id" : "8367663368" 
       } ] 
      } 
     } 
     ] 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^