簡體   English   中英

WSO2 EI 從注冊表中讀取 json

[英]WSO2 EI read json from registry

我有這個 api

<api xmlns="http://ws.apache.org/ns/synapse" name="EosPlaces" context="/eosplaces"><resource methods="GET" uri-template="/comuni">
  <inSequence>
     <property name="comuni" expression="get-property('registry', 'gov:/eos/common/json/comuni.json')" scope="axis2" type="STRING"/>
     <payloadFactory media-type="json">
        <format>$1</format>
        <args>
           <arg evaluator="xml" expression="$ctx:comuni"/>
        </args>
     </payloadFactory>
     <property name="messageType" value="application/json" scope="axis2"/>
     <respond/>
  </inSequence></resource></api>

這是存儲在注冊表中的 json,媒體類型為 application/json:

{
    "comuni": [{
            "Denominazione": "Agliè",
            "Regione": "Piemonte",
            "Provincia": "Torino",
            "SiglaProv": "TO",
            "Belfiore": "A074"
        },
        {
            "Denominazione": "Airasca",
            "Regione": "Piemonte",
            "Provincia": "Torino",
            "SiglaProv": "TO",
            "Belfiore": "A109"
        },
        {
            "Denominazione": "Ala di Stura",
            "Regione": "Piemonte",
            "Provincia": "Torino",
            "SiglaProv": "TO",
            "Belfiore": "A117"
        },
        {
            "Denominazione": "Albiano d'Ivrea",
            "Regione": "Piemonte",
            "Provincia": "Torino",
            "SiglaProv": "TO",
            "Belfiore": "A157"
        },
        {
            "Denominazione": "Almese",
            "Regione": "Piemonte",
            "Provincia": "Torino",
            "SiglaProv": "TO",
            "Belfiore": "A218"
        },
        {
            "Denominazione": "Alpette",
            "Regione": "Piemonte",
            "Provincia": "Torino",
            "SiglaProv": "TO",
            "Belfiore": "A221"
        },
        {
            "Denominazione": "Alpignano",
            "Regione": "Piemonte",
            "Provincia": "Torino",
            "SiglaProv": "TO",
            "Belfiore": "A222"
        },
        {
            "Denominazione": "Andezeno",
            "Regione": "Piemonte",
            "Provincia": "Torino",
            "SiglaProv": "TO",
            "Belfiore": "A275"
        },
        {
            "Denominazione": "Andrate",
            "Regione": "Piemonte",
            "Provincia": "Torino",
            "SiglaProv": "TO",
            "Belfiore": "A282"
        },
        {
            "Denominazione": "Angrogna",
            "Regione": "Piemonte",
            "Provincia": "Torino",
            "SiglaProv": "TO",
            "Belfiore": "A295"
        }
    ]
}

我想閱讀 json 並在調用 api 時輸出它,但響應是:

<Empty JSON content>

原始文件是:“HTTP/1.1 200 OK Host: 192.168.0.191:8280 Accept-Encoding: gzip,deflate Content-Type: application/json; charset=UTF-8 Date: Wed, 08 Apr 2020 12:00:19 GMT 傳輸編碼:分塊連接:Keep-A1live"

{}

謝謝

更新:如果我記錄從注冊表中選擇 json 的屬性,這就是我在日志中看到的

=

僅當您將注冊表文件的媒體類型設置為 text/plain 時,這才有效。 這是因為當您將其作為 application/json 時,它會以不同的方式對文件進行編碼。

您實際上不需要將其設置為文本/純文本,但這是完成工作的一種方式。 您可以簡單地添加 base64Decode() 以從 base64 編碼的 json 中取出字符串。

在你的情況下,它看起來像這樣

<property name="comuni" expression="base64Decode(get-property('registry', 'gov:/eos/common/json/comuni.json'))" scope="axis2" type="STRING"/>

好的,現在它運行良好,但 output,即使是有效的 json,也有如下轉義字符:

{
"text": "{\n\t\"comuni\": [{\n\t\t\t\"Denominazione\": \"Agliè\",\n\t\t\t\"Regione\": \"Piemonte\",\n\t\t\t\"Provincia\": \"Torino\",\n\t\t\t\"SiglaProv\": \"TO\",\n\t\t\t\"Belfiore\": \"A074\"\n\t\t},\n\t\t{\n\t\t\t\"Denominazione\": \"Airasca\",\n\t\t\t\"Regione\": \"Piemonte\",\n\t\t\t\"Provincia\": \"Torino\",\n\t\t\t\"SiglaProv\": \"TO\",\n\t\t\t\"Belfiore\": \"A109\"\n\t\t},\n\t\t{\n\t\t\t\"Denominazione\": \"Ala di Stura\",\n\t\t\t\"Regione\": \"Piemonte\",\n\t\t\t\"Provincia\": \"Torino\",\n\t\t\t\"SiglaProv\": \"TO\",\n\t\t\t\"Belfiore\": \"A117\"\n\t\t},\n\t\t{\n\t\t\t\"Denominazione\": \"Albiano d'Ivrea\",\n\t\t\t\"Regione\": \"Piemonte\",\n\t\t\t\"Provincia\": \"Torino\",\n\t\t\t\"SiglaProv\": \"TO\",\n\t\t\t\"Belfiore\": \"A157\"\n\t\t},\n\t\t{\n\t\t\t\"Denominazione\": \"Almese\",\n\t\t\t\"Regione\": \"Piemonte\",\n\t\t\t\"Provincia\": \"Torino\",\n\t\t\t\"SiglaProv\": \"TO\",\n\t\t\t\"Belfiore\": \"A218\"\n\t\t},\n\t\t{\n\t\t\t\"Denominazione\": \"Alpette\",\n\t\t\t\"Regione\": \"Piemonte\",\n\t\t\t\"Provincia\": \"Torino\",\n\t\t\t\"SiglaProv\": \"TO\",\n\t\t\t\"Belfiore\": \"A221\"\n\t\t},\n\t\t{\n\t\t\t\"Denominazione\": \"Alpignano\",\n\t\t\t\"Regione\": \"Piemonte\",\n\t\t\t\"Provincia\": \"Torino\",\n\t\t\t\"SiglaProv\": \"TO\",\n\t\t\t\"Belfiore\": \"A222\"\n\t\t},\n\t\t{\n\t\t\t\"Denominazione\": \"Andezeno\",\n\t\t\t\"Regione\": \"Piemonte\",\n\t\t\t\"Provincia\": \"Torino\",\n\t\t\t\"SiglaProv\": \"TO\",\n\t\t\t\"Belfiore\": \"A275\"\n\t\t},\n\t\t{\n\t\t\t\"Denominazione\": \"Andrate\",\n\t\t\t\"Regione\": \"Piemonte\",\n\t\t\t\"Provincia\": \"Torino\",\n\t\t\t\"SiglaProv\": \"TO\",\n\t\t\t\"Belfiore\": \"A282\"\n\t\t},\n\t\t{\n\t\t\t\"Denominazione\": \"Angrogna\",\n\t\t\t\"Regione\": \"Piemonte\",\n\t\t\t\"Provincia\": \"Torino\",\n\t\t\t\"SiglaProv\": \"TO\",\n\t\t\t\"Belfiore\": \"A295\"\n\t\t}\n\t]\n}"}

我怎么能調整它?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM