Anda sedang melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Apa
Kebijakan ini mengonversi pesan dari format extensible markup language (XML) menjadi JavaScript Object Notation (JSON), yang memberi Anda beberapa opsi untuk mengontrol cara pesan dikonversi.
Dengan asumsi bahwa intent tersebut mengonversi respons berformat XML menjadi respons berformat JSON, kebijakan tersebut akan dilampirkan ke Flow respons (misalnya, Respons / ProxyEndpoint / PostFlow).
Tentang
Dalam skenario mediasi umum, kebijakan JSON ke XML pada alur permintaan masuk sering kali dipasangkan dengan kebijakan XML ke JSON pada alur respons keluar. Dengan menggabungkan kebijakan dengan cara ini, JSON API dapat diekspos untuk layanan backend yang secara native hanya mendukung XML.
Untuk skenario ketika API digunakan oleh beragam aplikasi klien yang mungkin memerlukan JSON atau XML, format respons dapat ditetapkan secara dinamis dengan mengonfigurasi kebijakan JSON ke XML dan XML ke JSON untuk dijalankan secara bersyarat. Lihat Variabel dan kondisi flow untuk mengetahui implementasi skenario ini.
Contoh
Untuk diskusi mendetail tentang konversi antara JSON dan XML, lihat http://community.apigee.com/articles/1839/converting-between-xml-and-json-what-you-need-to-k.html.
Mengonversi respons
<XMLToJSON name="ConvertToJSON"> <Options> </Options> <OutputVariable>response</OutputVariable> <Source>response</Source> </XMLToJSON>
Konfigurasi ini, yang merupakan konfigurasi minimal yang diperlukan untuk mengonversi XML ke JSON, mengambil pesan respons berformat XML sebagai sumber, lalu membuat pesan berformat JSON yang diisi dalam OutputVariable response
. Edge otomatis menggunakan konten variabel ini sebagai pesan untuk langkah pemrosesan berikutnya.
Referensi elemen
Berikut adalah elemen dan atribut yang dapat Anda konfigurasi di kebijakan ini.
<XMLToJSON async="false" continueOnError="false" enabled="true" name="XML-to-JSON-1"> <DisplayName>XML to JSON 1</DisplayName> <Source>response</Source> <OutputVariable>response</OutputVariable> <Options> <RecognizeNumber>true</RecognizeNumber> <RecognizeBoolean>true</RecognizeBoolean> <RecognizeNull>true</RecognizeNull> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>&</DefaultNamespaceNodeName> <NamespaceSeparator>***</NamespaceSeparator> <TextAlwaysAsProperty>true</TextAlwaysAsProperty> <TextNodeName>TEXT</TextNodeName> <AttributeBlockName>FOO_BLOCK</AttributeBlockName> <AttributePrefix>BAR_</AttributePrefix> <OutputPrefix>PREFIX_</OutputPrefix> <OutputSuffix>_SUFFIX</OutputSuffix> <StripLevels>2</StripLevels> <TreatAsArray> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options> <!-- Use Options or Format, not both --> <Format>yahoo</Format> </XMLToJSON>
Atribut <XMLtoJSON>
<XMLtoJSON async="false" continueOnError="false" enabled="true" name="XML-to-JSON-1">
Tabel berikut menjelaskan atribut yang sama untuk semua elemen induk kebijakan:
Atribut | Deskripsi | Default | Ketersediaan |
---|---|---|---|
name |
Nama internal kebijakan. Nilai atribut Atau, gunakan elemen |
T/A | Wajib |
continueOnError |
Setel ke Setel ke |
false | Opsional |
enabled |
Setel ke Setel ke |
true | Opsional |
async |
Atribut ini sudah tidak digunakan lagi. |
false | Tidak digunakan lagi |
Elemen <DisplayName>
Gunakan selain atribut name
untuk memberi label kebijakan di
editor proxy UI pengelolaan dengan nama natural-language yang berbeda.
<DisplayName>Policy Display Name</DisplayName>
Default |
T/A Jika Anda menghapus elemen ini, nilai atribut |
---|---|
Ketersediaan | Opsional |
Jenis | String |
Elemen <Source>
Variabel, permintaan atau respons, yang berisi pesan XML yang ingin Anda konversi ke JSON.
Header Jenis konten HTTP pesan sumber harus ditetapkan ke
application/xml
. Jika tidak, kebijakan tidak akan diterapkan.
Jika <Source>
tidak ditentukan, kebijakan akan diperlakukan sebagai pesan (yang di-resolve
untuk meminta ketika kebijakan dilampirkan ke alur permintaan, atau respons saat kebijakan dilampirkan
ke alur respons).
Jika variabel sumber tidak dapat di-resolve, atau di-resolve menjadi jenis non-pesan, kebijakan akan menampilkan error.
<Source>response</Source>
Default | permintaan atau respons, ditentukan oleh tempat kebijakan ditambahkan ke alur proxy API |
Kehadiran | Opsional |
Jenis | pesan |
Elemen <OutputVariable>
Menyimpan output konversi format XML ke JSON. Ini biasanya nilai yang sama dengan sumber, yaitu biasanya respons XML dikonversi ke respons JSON.
Payload pesan XML diuraikan dan dikonversi menjadi JSON, dan header Jenis Konten HTTP
dari pesan berformat XML ditetapkan ke application/json
.
Jika OutputVariable
tidak ditentukan, source
akan diperlakukan sebagai
OutputVariable
. Misalnya, jika source
adalah response
,
maka OutputVariable
ditetapkan secara default ke response
.
<OutputVariable>response</OutputVariable>
Default | permintaan atau respons, ditentukan oleh tempat kebijakan ditambahkan ke alur proxy API |
Kehadiran | Elemen ini wajib ada jika variabel yang ditentukan dalam elemen <Source> adalah string jenis. |
Jenis | pesan |
<Opsi>
Opsi memberi Anda kontrol atas konversi dari XML ke JSON. Gunakan grup
<Options>
, yang memungkinkan Anda menambahkan setelan konversi tertentu, atau
elemen <Format>
, yang memungkinkan Anda mereferensikan template
opsi yang telah ditentukan. Anda tidak dapat menggunakan <Options>
dan
<Format>
sekaligus.
<Options>
diperlukan jika <Format>
tidak digunakan.
Elemen <Options>/<RecognizeNumber>
Jika true (benar), kolom angka dalam payload XML akan mempertahankan format aslinya.
<RecognizeNumber>true</RecognizeNumber>
Perhatikan contoh XML berikut:
<a> <b>100</b> <c>value</c> </a>
Jika true
, dikonversi menjadi:
{ "a": { "b": 100, "c": "value" } }
Jika false
, dikonversi menjadi:
{ "a": { "b": "100", "c": "value" } }
Default | false |
Kehadiran | Opsional |
Jenis | Boolean |
Elemen <Options>/<RecognizeBoolean>
Memungkinkan konversi mempertahankan nilai boolean benar/salah daripada mengubah nilai menjadi string.
<RecognizeBoolean>true</RecognizeBoolean>
Untuk contoh XML berikut:
<a> <b>true</b> <c>value</c> </a>
Jika true
, dikonversi menjadi:
{ "a": { "b": true, "c": "value" } }
Jika false
, dikonversi menjadi:
{ "a": { "b": "true", "c": "value" } }
Default | false |
Kehadiran | Opsional |
Jenis | Boolean |
Elemen <Options>/<RecognizeNull>
Memungkinkan Anda mengonversi nilai kosong ke nilai null.
<RecognizeNull>true</RecognizeNull>
Untuk XML berikut:
<a> <b></b> <c>value</c> </a>
Jika true
, dikonversi menjadi:
{ "a": { "b": null, "c": "value" } }
Jika false
, dikonversi menjadi:
{ "a": { "b": {}, "c": "value" } }
Default | false |
Kehadiran | Opsional |
Jenis | Boolean |
Elemen <Options>/<NullValue>
Menunjukkan nilai yang akan dikonversi menjadi nilai null yang dikenali dalam pesan sumber. Secara default, nilainya adalah null
. Opsi ini hanya berlaku jika RecognizeNull
bernilai benar (true).
<NullValue>not-present</NullValue>
Default | null |
Kehadiran | Opsional |
Jenis | String |
<Opsi>/<NamespaceBlockName>
<Options>/<DefaultNamespaceNodeName>
Elemen <Options>/<NamespaceSeparator>
Gunakan elemen-elemen ini secara bersamaan.
<NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>&</DefaultNamespaceNodeName> <NamespaceSeparator>***</NamespaceSeparator>
Perhatikan contoh XML berikut:
<a xmlns="http://ns.com" xmlns:ns1="http://ns1.com"> <ns1:b>value</ns1:b> </a>
Jika NamespaceSeparator
tidak ditentukan, struktur JSON berikut akan dibuat:
{ "a": { "b": "value" } }
Jika elemen NamespaceBlockName
, DefaultNamespaceNodeName
, dan
NamespaceSeparator
masing-masing ditentukan sebagai #namespaces
, &
,
dan ***
, struktur JSON berikut akan dibuat:
{ "a": { "#namespaces": { "&": "http://ns.com", "ns1": "http://ns1.com" }, "ns1***b": "value" } }
Default | Lihat contoh di atas. |
Kehadiran | Opsional Namun, jika menentukan <NamespaceBlockName> , Anda juga harus menentukan
dua elemen lainnya. |
Jenis | String |
Elemen <Options>/<TextAlwaysAsProperty>
<Options>/<TextNodeName>
Gunakan elemen-elemen ini secara bersamaan.
Jika ditetapkan ke true
, konten elemen XML akan dikonversi menjadi properti
string.
<TextAlwaysAsProperty>true</TextAlwaysAsProperty> <TextNodeName>TEXT</TextNodeName>
Untuk XML berikut:
<a> <b>value1</b> <c>value2<d>value3</d>value4</c> </a>
Jika TextAlwaysAsProperty
ditetapkan ke true
dan TextNodeName
ditetapkan sebagai TEXT
, struktur JSON berikut akan dibuat:
{ "a": { "b": { "TEXT": "value1" }, "c": { "TEXT": [ "value2", "value4" ], "d": { "TEXT": "value3" } } } }
Jika TextAlwaysAsProperty
ditetapkan ke false
dan TextNodeName
ditetapkan sebagai TEXT
, struktur JSON berikut akan dibuat:
{ "a": { "b": "value1", "c": { "TEXT": [ "value2", "value4" ], { "d": "value3", } } }
Default | <TextAlwaysAsProperty> : salah<TextNodeName> : T/A |
Kehadiran | Opsional |
Jenis | <TextAlwaysAsProperty> : Boolean<TextNodeName> : String |
Elemen <Options>/<AttributeBlockName>
<Options>/<AttributePrefix>
Gunakan elemen-elemen ini secara bersamaan.
Memungkinkan Anda mengelompokkan nilai ke dalam blok JSON dan menambahkan awalan ke nama atribut.
<AttributeBlockName>FOO_BLOCK</AttributeBlockName> <AttributePrefix>BAR_</AttributePrefix>
Perhatikan contoh XML berikut:
<a attrib1="value1" attrib2="value2"/>
Jika kedua atribut (AttributeBlockName
dan AttributePrefix
)
ditetapkan seperti yang ditetapkan dalam contoh XML ke JSON, struktur JSON berikut akan dibuat:
{ "a": { "FOO_BLOCK": { "BAR_attrib1": "value1", "BAR_attrib2": "value2" } } }
Jika hanya AttributeBlockName
yang ditentukan, struktur JSON berikut akan dibuat:
{ "a": { "FOO_BLOCK": { "attrib1": "value1", "attrib2": "value2" } } }
Jika hanya AttributePrefix
yang ditentukan, struktur JSON berikut akan dibuat:
{ "a": { "BAR_attrib1": "value1", "BAR_attrib2": "value2" } }
Jika keduanya tidak ditentukan, struktur JSON berikut akan dibuat:
{ "a": { "attrib1": "value1", "attrib2": "value2" } }
Default | Lihat contoh di atas. |
Kehadiran | Opsional |
Jenis | String |
Elemen <Options>/<OutputPrefix>
<Options>/<OutputSuffix>
Gunakan elemen-elemen ini secara bersamaan.
<OutputPrefix>PREFIX_</OutputPrefix> <OutputSuffix>_SUFFIX</OutputSuffix>
Perhatikan contoh XML berikut:
<a>value</a>
Jika kedua atribut (OutputPrefix
dan OutputSuffix
) ditentukan
seperti yang ditentukan dalam contoh XML ke JSON, struktur JSON berikut akan dibuat:
PREFIX_{ "a": "value" }_SUFFIX
Jika hanya OutputPrefix
yang ditentukan, struktur JSON berikut akan dibuat:
PREFIX_{ "a" : "value" }
Jika hanya OutputSuffix
yang ditentukan, struktur JSON berikut akan dibuat:
{ "a" : "value" }_SUFFIX
Jika OutputPrefix
atau OutputSuffix
tidak ditentukan, struktur JSON berikut akan dibuat:
{ "a": "value" }
Default | Lihat contoh di atas. |
Kehadiran | Opsional |
Jenis | String |
Elemen <Options>/<StripLevels>
<Options> <StripLevels>4</StripLevels> </Options>
Terkadang payload XML, seperti SOAP, memiliki banyak level induk yang tidak ingin Anda sertakan dalam JSON yang dikonversi. Berikut adalah contoh respons SOAP yang berisi banyak level:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/Schemata-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetCityWeatherByZIPResponse xmlns="http://ws.cdyne.com/WeatherWS/"> <GetCityWeatherByZIPResult> <State>CO</State> <City>Denver</City> <Description>Sunny</Description> <Temperature>62</Temperature> </GetCityWeatherByZIPResult> </GetCityWeatherByZIPResponse> </soap:Body> </soap:Envelope>
Ada 4 level sebelum Anda mencapai tingkat Negara Bagian, Kota, Deskripsi, dan Suhu.
Tanpa menggunakan <StripLevels>
, respons JSON yang dikonversi akan terlihat seperti ini:
{ "Envelope" : { "Body" : { "GetCityWeatherByZIPResponse" : { "GetCityWeatherByZIPResult" : { "State" : "CO", "City" : "Denver", "Description" : "Sunny", "Temperature" : "62" } } } } }
Jika ingin menghapus 4 level pertama tersebut dalam respons JSON, Anda harus menetapkan <StripLevels>4</StripLevels>
, yang akan memberi Anda JSON berikut:
{ "State" : "CO", "City" : "Denver", "Description" : "Sunny", "Temperature" : "62" }
Anda dapat menghapus tingkat hingga elemen pertama yang berisi beberapa turunan. Apa artinya? Mari kita lihat contoh JSON yang lebih kompleks:
{ "Envelope" : { "Body" : { "GetCityForecastByZIPResponse" : { "GetCityForecastByZIPResult" : { "ResponseText" : "City Found", "ForecastResult" : { "Forecast" : [ { "ProbabilityOfPrecipiation" : { "Nighttime" : "00", "Daytime" : 10 } ...
Level 3 dalam contoh ini adalah GetCityForecastByZIPResponse
, yang hanya memiliki satu
turunan. Jadi, jika Anda menggunakan <StripLevels>3</StripLevels>
(hapus tiga level pertama), JSON akan terlihat seperti ini:
{ "GetCityForecastByZIPResult" : { "ResponseText" : "City Found", "ForecastResult" : { "Forecast" : [ { "ProbabilityOfPrecipiation" : { "Nighttime" : "00", "Daytime" : 10 } ...
Perhatikan bahwa GetCityForecastByZIPResult
memiliki beberapa turunan. Karena elemen ini merupakan elemen pertama yang berisi beberapa turunan, Anda dapat menghapus level terakhir ini menggunakan <StripLevels>4</StripLevels>
, yang akan memberi Anda JSON berikut:
{ "ResponseText" : "City Found", "ForecastResult" : { "Forecast" : [ { "ProbabilityOfPrecipiation" : { "Nighttime" : "00", "Daytime" : 10 } ...
Karena level 4 adalah tingkat pertama yang berisi beberapa turunan, Anda tidak dapat menghapus tingkat mana pun yang lebih rendah dari ini. Jika Anda menetapkan level strip ke 5, 6, 7, dan seterusnya, Anda akan terus mendapatkan respons di atas.
Default | 0 (tidak ada pengupasan permukaan) |
Kehadiran | Opsional |
Jenis | Bilangan Bulat |
Elemen <Options>/<TreatAsArray>/<Path>
<Options> <TreatAsArray> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options>
Kombinasi elemen ini memungkinkan Anda memastikan bahwa nilai dari dokumen XML dimasukkan ke dalam array JSON. Hal ini berguna, misalnya, ketika jumlah elemen turunan dapat bervariasi (dari satu hingga beberapa), dan Anda ingin memastikan nilainya selalu dalam array. Tindakan ini membantu menjaga
kode Anda tetap stabil, karena Anda bisa mendapatkan data dari array dengan cara yang sama setiap saat. Misalnya: $.teachers.teacher.studentnames[0]
mendapatkan nilai nama siswa pertama dalam array, terlepas dari jumlah nilai dalam array.
Mari kita mundur selangkah dan melihat perilaku default XML ke JSON, lalu mempelajari cara mengontrol output menggunakan <TreatAsArray>/<Path>
.
Jika dokumen XML berisi elemen dengan beberapa nilai turunan (biasanya didasarkan pada skema dengan maxOccurs='unbounded'
elemen), kebijakan XML ke JSON akan otomatis memasukkan nilai tersebut dalam sebuah array. Misalnya, blok XML berikut
<teacher> <name>teacherA</name> <studentnames> <name>student1</name> <name>student2</name> </studentnames> </teacher>
...dikonversi menjadi JSON berikut secara otomatis tanpa konfigurasi kebijakan khusus:
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : [ "student1", "student2" ]} } } }
Perhatikan bahwa kedua nama siswa tersebut dimasukkan ke dalam array.
Namun, jika hanya satu siswa yang muncul dalam dokumen XML, kebijakan XML ke JSON akan otomatis memperlakukan nilai ini sebagai string tunggal, bukan array string, seperti yang ditunjukkan dalam contoh berikut:
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : "student1" } } } }
Pada contoh sebelumnya, data yang serupa dikonversi secara berbeda, sekali sebagai array, lainnya sebagai string tunggal. Di sinilah elemen <TreatAsArray>/<Path>
memungkinkan Anda mengontrol output. Misalnya, Anda dapat memastikan bahwa nama siswa selalu dimasukkan ke dalam array meskipun hanya ada satu nilai. Anda mengonfigurasi ini dengan mengidentifikasi Jalur ke
elemen yang nilainya ingin Anda masukkan ke dalam array, seperti berikut:
<Options> <TreatAsArray> <Path>teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options>
Konfigurasi di atas akan menulis JSON seperti ini:
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : ["student1"] } ] } } }
Perhatikan bahwa siswa1 sekarang berada dalam array. Sekarang, terlepas dari apakah ada satu atau beberapa
siswa, Anda dapat mengambilnya dari array JSON dalam kode Anda menggunakan JSONPath berikut:
$.teachers.teacher.studentnames.name[0]
Elemen <Path>
juga memiliki atribut unwrap
, yang dijelaskan di
bagian berikutnya.
Default | TA |
Kehadiran | Opsional |
Jenis | String |
Atribut
<Options> <TreatAsArray> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options>
Atribut | Deskripsi | Ketersediaan | Jenis |
---|---|---|---|
buka penggabungan |
Default: false Menghapus elemen dari output JSON. Gunakan ini untuk menyederhanakan atau meratakan ("membuka") JSON, yang juga menyingkat JSONPath yang diperlukan untuk mengambil nilai. Misalnya,
sebagai ganti Berikut adalah contoh JSON: { "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : [ "student1", "student2" ]}... Dalam contoh ini, Anda dapat berpendapat bahwa elemen <TreatAsArray> <Path unwrap="true">teachers/teacher</Path> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray> Atribut { "teachers" : [{ "name" : "teacherA", "studentnames" : ["student1","student2"] }]... Perlu diketahui bahwa karena elemen |
Opsional | Boolean |
Untuk mengetahui contoh lainnya dan panduan fitur, lihat artikel Komunitas Apigee ini: https://community.apigee.com/content/kbentry/33374/new-edge-minifeature-the-treatasarray-option-in-th.html.
<Format>
Format memberi Anda kontrol atas konversi dari XML ke JSON. Masukkan nama template standar yang berisi kombinasi spesifik elemen Opsi yang dijelaskan dalam topik ini.
Format yang telah ditentukan sebelumnya meliputi: xml.com
, yahoo
, google
,
badgerFish
.
Gunakan elemen <Format>
atau grup <Options>
. Anda tidak dapat menggunakan
<Format>
dan <Options>
sekaligus.
Berikut adalah definisi Format dari setiap template standar.
xml.com
<RecognizeNull>true</RecognizeNull> <TextNodeName>#text</TextNodeName> <AttributePrefix>@</AttributePrefix>
yahoo
<RecognizeNumber>true</RecognizeNumber> <TextNodeName>content</TextNodeName>
<TextNodeName>$t</TextNodeName> <NamespaceSeparator>$</NamespaceSeparator> <TextAlwaysAsProperty>true</TextAlwaysAsProperty>
badgerFish
<TextNodeName>$</TextNodeName> <TextAlwaysAsProperty>true</TextAlwaysAsProperty> <AttributePrefix>@</AttributePrefix> <NamespaceSeparator>:</NamespaceSeparator> <NamespaceBlockName>@xmlns</NamespaceBlockName> <DefaultNamespaceNodeName>$</DefaultNamespaceNodeName>
Sintaksis elemen:
<Format>yahoo</Format>
Default | Masukkan nama dalam format yang tersedia:xml.com , yahoo , google , badgerFish |
Kehadiran | Wajib ada jika <Options> tidak digunakan. |
Jenis | String |
Skema
Referensi error
Bagian ini menjelaskan kode kesalahan dan pesan error yang ditampilkan dan variabel kesalahan yang disetel oleh Edge saat kebijakan ini memicu error. Informasi ini penting untuk diketahui apakah Anda mengembangkan aturan kesalahan untuk menangani kesalahan. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani kesalahan.
Error runtime
Error ini dapat terjadi saat kebijakan dieksekusi.
Kode kesalahan | Status HTTP | Penyebab | Perbaiki |
---|---|---|---|
steps.xmltojson.ExecutionFailed |
500 | Error ini terjadi jika payload input (XML) kosong atau XML input tidak valid atau formatnya salah. | build |
steps.xmltojson.InCompatibleType |
500 | Error ini terjadi jika jenis variabel yang ditentukan dalam elemen <Source> dan
elemen <OutputVariable> tidak sama. Jenis variabel yang ada dalam elemen <Source> dan elemen <OutputVariable> harus cocok.
|
build |
steps.xmltojson.InvalidSourceType |
500 | Error ini terjadi jika jenis variabel yang digunakan untuk menetapkan elemen <Source>
tidak valid.Jenis variabel yang valid adalah pesan dan string. |
build |
steps.xmltojson.OutputVariableIsNotAvailable |
500 | Error ini terjadi jika variabel yang ditentukan dalam elemen <Source> kebijakan XML ke
JSON adalah string jenis dan elemen <OutputVariable> tidak ditentukan.
Elemen <OutputVariable> bersifat wajib jika variabel yang ditentukan dalam elemen <Source>
adalah string jenis. |
build |
steps.xmltojson.SourceUnavailable |
500 |
Error ini terjadi jika variabel message
yang ditentukan dalam elemen <Source> dari kebijakan XML ke JSON adalah:
|
build |
Error saat deployment
Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.
Nama error | Penyebab | Perbaiki |
---|---|---|
EitherOptionOrFormat |
Jika salah satu elemen <Options> atau <Format> tidak
dideklarasikan dalam Kebijakan XML ke JSON, deployment proxy API akan gagal.
|
build |
UnknownFormat |
Jika elemen <Format> dalam kebijakan XML ke JSON memiliki format yang tidak diketahui, deployment proxy API akan gagal. Format yang telah ditentukan sebelumnya meliputi: xml.com , yahoo , google , dan badgerFish .
|
build |
Variabel kesalahan
Variabel ini ditetapkan saat terjadi error runtime. Untuk informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.
Variabel | Dari mana | Contoh |
---|---|---|
fault.name="fault_name" |
fault_name adalah nama kesalahan, seperti yang tercantum dalam tabel Error runtime di atas. Nama kesalahan adalah bagian terakhir dari kode kesalahan. | fault.name = "SourceUnavailable" |
xmltojson.policy_name.failed |
policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan kesalahan. | xmltojson.XMLtoJSON-1.failed = true |
Contoh respons error
{ "fault": { "faultstring": "XMLToJSON[XMLtoJSON-1]: Source xyz is not available", "detail": { "errorcode": "steps.xml2json.SourceUnavailable" } } }
Contoh aturan kesalahan
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="XML to JSON Faults"> <Step> <Name>AM-SourceUnavailableMessage</Name> <Condition>(fault.name Matches "SourceUnavailable") </Condition> </Step> <Step> <Name>AM-BadXML</Name> <Condition>(fault.name = "ExecutionFailed")</Condition> </Step> <Condition>(xmltojson.XMLtoJSON-1.failed = true) </Condition> </FaultRule>
Topik terkait
JSON ke XML: Kebijakan JSON ke XML