Halaman ini berlaku untuk Apigee dan Apigee Hybrid.
Baca dokumentasi Apigee Edge.
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 adalah untuk mengonversi respons berformat XML menjadi respons berformat JSON, kebijakan tersebut akan dilampirkan ke Alur respons (misalnya, Respons / ProxyEndpoint/PostFlow).
Kebijakan ini adalah Kebijakan standar dan dapat di-deploy ke jenis lingkungan apa pun. Tidak semua pengguna perlu mengetahui tentang kebijakan dan jenis lingkungan. Untuk mengetahui informasi tentang jenis kebijakan dan ketersediaan untuk setiap jenis lingkungan, lihat Jenis kebijakan.
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 seperti ini, JSON API dapat diekspos untuk layanan backend yang secara native hanya mendukung XML.
Untuk skenario di mana API digunakan oleh beragam aplikasi klien yang mungkin memerlukan JSON atau XML, format respons dapat disetel secara dinamis dengan mengonfigurasi kebijakan JSON ke XML dan XML ke JSON untuk dijalankan secara bersyarat. Lihat Variabel dan kondisi flow untuk implementasi skenario ini.
Sampel
Untuk diskusi mendetail tentang konversi antara JSON dan XML, lihat artikel ini.
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
. Apigee otomatis menggunakan konten variabel ini sebagai pesan untuk langkah pemrosesan berikutnya.
Referensi elemen
Berikut adalah elemen dan atribut yang dapat Anda konfigurasi pada 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 | Kehadiran |
---|---|---|---|
name |
Nama internal kebijakan. Nilai atribut Atau, gunakan elemen |
T/A | Diperlukan |
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 |
---|---|
Kehadiran | Opsional |
Jenis | String |
Elemen <Source>
Variabel yang menentukan pesan XML yang ingin Anda konversi ke JSON.
Header Jenis konten HTTP pada pesan sumber harus disetel ke
application/xml
. Jika tidak, kebijakan tidak akan diterapkan.
Jika <Source>
tidak ditentukan, kebijakan akan diperlakukan sebagai message
,
yang di-resolve ke request
saat kebijakan dikaitkan ke alur permintaan, atau
response
saat kebijakan dikaitkan ke alur respons.
Jika variabel sumber tidak dapat di-resolve, atau di-resolve ke jenis non-pesan, kebijakan akan menampilkan error.
<Source>response</Source>
Default | Nilai elemen Source |
---|---|
Kehadiran | Opsional |
Jenis | Pesan |
Elemen <OutputVariable>
Menentukan tempat untuk menyimpan output konversi format XML ke JSON. Biasanya, elemen ini tidak disertakan dalam konfigurasi kebijakan.
Apigee mengurai payload pesan XML yang ditentukan dalam Source
, mengubahnya menjadi JSON, menyimpan hasilnya ke dalam payload OutputVariable
, dan menetapkan header Content-type HTTP pesan OutputVariable
ke application/json
.
Jika OutputVariable
tidak ditentukan, nilai Source
akan digunakan secara default. Misalnya, jika source
adalah response
,
maka OutputVariable
akan ditetapkan secara default ke response
.
<OutputVariable>response</OutputVariable>
Default | pesan yang ditentukan dalam Source |
---|---|
Kehadiran | Opsional |
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 <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 RecognizeNumber
adalah true
, kebijakan akan mengonversinya menjadi:
{ "a": { "b": 100, "c": "value" } }
Jika RecognizeNumber
adalah false
, kebijakan akan mengonversinya menjadi:
{ "a": { "b": "100", "c": "value" } }
Default | false |
---|---|
Kehadiran | Opsional |
Jenis | Boolean |
Elemen <RecognizeBoolean>
Memungkinkan konversi mempertahankan nilai true/false boolean, bukan mengubah nilai menjadi string.
<RecognizeBoolean>true</RecognizeBoolean>
Untuk contoh XML berikut:
<a> <b>true</b> <c>value</c> </a>
Jika RecognizeBoolean
adalah true
, kebijakan akan mengonversinya menjadi:
{ "a": { "b": true, "c": "value" } }
Jika RecognizeBoolean
adalah false
, kebijakan akan mengonversinya menjadi:
{ "a": { "b": "true", "c": "value" } }
Default | false |
---|---|
Kehadiran | Opsional |
Jenis | Boolean |
Elemen <RecognizeNull>
Memungkinkan Anda mengonversi nilai kosong menjadi nilai null.
<RecognizeNull>true</RecognizeNull>
Untuk XML berikut:
<a> <b></b> <c>value</c> </a>
Jika RecognizeNull
adalah true
, dan jika tidak ada opsi NullValue
, XML ini akan dikonversi menjadi:
{ "a": { "b": null, "c": "value" } }
Jika RecognizeNull
adalah false
, XML ini akan dikonversi menjadi:
{ "a": { "b": {}, "c": "value" } }
Default | false |
---|---|
Kehadiran | Opsional |
Jenis | Boolean |
Elemen <NullValue>
Menunjukkan nilai saat nilai null yang dikenali dalam pesan sumber harus dikonversi. Secara default, nilainya adalah null
. Opsi ini hanya efektif jika RecognizeNull
benar.
<NullValue>not-present</NullValue>
Untuk XML berikut:
<a> <b></b> <c>value</c> </a>
Jika RecognizeNull
adalah true
, dan NullValue
tidak ditentukan,
XML ini akan dikonversi menjadi:
{ "a": { "b": null, "c": "value" } }
Jika RecognizeNull
adalah true
, dan NullValue
adalah
not-present
, XML ini akan dikonversi menjadi:
{ "a": { "b": "not-present", "c": "value" } }
Default | null |
---|---|
Kehadiran | Opsional |
Jenis | String |
Opsi namespace
Secara default, kebijakan ini menghilangkan namespace XML di JSON yang dihasilkan. Untuk menentukan bahwa namespace dalam dokumen XML harus diterjemahkan ke dalam JSON yang dihasilkan, gunakan elemen-elemen ini bersama-sama.
<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 ditetapkan sebagai #namespaces
, &
, dan ***
, struktur JSON berikut akan dibuat:
{ "a": { "#namespaces": { "&": "http://ns.com", "ns1": "http://ns1.com" }, "ns1***b": "value" } }
Default | Tidak ada. Jika <NamespaceBlockName> tidak ditentukan, kebijakan akan
menghasilkan JSON output yang tidak merujuk ke namespace XML mana pun, terlepas apakah
pesan sumber merujuk ke namespace atau tidak. |
---|---|
Kehadiran | Opsional Namun, jika menentukan <NamespaceBlockName> , Anda juga harus menentukan
dua elemen lainnya. |
Jenis | String |
Opsi teks
Gunakan elemen-elemen ini bersama-sama.
<TextAlwaysAsProperty>true|false</TextAlwaysAsProperty> <TextNodeName>TEXT</TextNodeName>
Jika kebijakan menemukan elemen XML yang hanya berisi satu node teks sebagai turunan, kebijakan ini akan menerjemahkan konten teks elemen XML tersebut menjadi properti dalam hash JSON.
Jika kebijakan menemukan elemen XML yang berisi beberapa turunan konten campuran, opsi ini memungkinkan Anda mengontrol JSON output dari setiap node teks turunan.
Misalnya, pertimbangkan konfigurasi kebijakan ini:
<XMLToJSON name='XMLToJSON-1'> <Options> <TextAlwaysAsProperty>???</TextAlwaysAsProperty> <TextNodeName>#text</TextNodeName> </Options> </XMLToJSON>
Untuk input XML tertentu, kebijakan akan menghasilkan output ini, bergantung pada
apakah TextAlwaysAsProperty
adalah true
atau false
:
Input XML | Output JSON | |
---|---|---|
jika TextAlwaysAsProperty adalah false |
jika TextAlwaysAsProperty adalah true |
|
<a>value1</a> |
{ "a": "value1" } |
{ "a": { "#text": "value1" } } |
<a>value1 <b>value2</b> </a> |
{ "a": { "#text": "value1\n", "b": "value2" } } |
{ "a": { "#text": "value1\n", "b": { "#text": "value2" } } } |
Default | <TextAlwaysAsProperty> : salah<TextNodeName> : (string kosong) |
---|---|
Kehadiran | Opsional |
Jenis | <TextAlwaysAsProperty> : Boolean<TextNodeName> : String |
Opsi atribut
Elemen-elemen ini, bersama-sama, memungkinkan Anda untuk mengelompokkan nilai atribut 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 | tidak ada. |
---|---|
Kehadiran | Opsional |
Jenis | String |
Elemen <OutputPrefix> dan <OutputSuffix>
Gunakan elemen ini bersama-sama untuk menerapkan awalan dan/atau akhiran ke JSON yang dihasilkan.
<OutputPrefix>PREFIX_</OutputPrefix> <OutputSuffix>_SUFFIX</OutputSuffix>
Perhatikan contoh XML berikut:
<a>value</a>
Misalkan konfigurasi kebijakan adalah sebagai berikut:
<XMLToJSON name='XMLToJSON-4'> <Options> <OutputPrefix>{ "result": </OutputPrefix> <OutputSuffix>}</OutputSuffix> </Options> </XMLToJSON>
Struktur JSON berikut akan dibuat:
{ "result": { "a": "value" } }
Anda dapat menghilangkan salah satu atau keduanya dari OutputPrefix
dan OutputSuffix
.
Menggunakan elemen-elemen ini, dimungkinkan untuk menghasilkan JSON yang tidak valid. Misalnya, dengan menggunakan konfigurasi kebijakan ini:
<XMLToJSON name='XMLToJSON-4'> <Options> <OutputPrefix>PREFIX_</OutputPrefix> </Options> </XMLToJSON>
Kebijakan ini menghasilkan hal berikut yang bukan JSON yang valid:
PREFIX_{ "a" : "value" }
Jika konfigurasi tidak menentukan OutputPrefix
atau OutputSuffix
, kebijakan akan menghasilkan struktur JSON berikut:
{ "a": "value" }
Default | Lihat contoh di atas. |
---|---|
Kehadiran | Opsional |
Jenis | String |
Elemen <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 tingkatan:
<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 tingkat 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 level hingga elemen pertama yang berisi beberapa turunan. Apa maksudnya? 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 ini adalah 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 level apa 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 (tanpa pengupasan lantai) |
---|---|
Kehadiran | Opsional |
Jenis | Bilangan bulat |
Elemen <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 selalu diterjemahkan
ke array JSON. Hal ini dapat berguna jika jumlah elemen turunan bervariasi untuk payload yang berbeda. Perilaku default Apigee adalah mengonversi beberapa elemen turunan dengan nama yang sama menjadi array JSON dan elemen turunan tunggal menjadi primitif JSON. Opsi TreatAsArray
memungkinkan Anda memastikan bahwa elemen turunan selalu diterjemahkan ke array JSON.
Penggunaan TreatAsArray
dapat meningkatkan struktur kode berikutnya yang menangani
output, karena data dari array ditampilkan dengan cara yang sama setiap saat. Misalnya, mengevaluasi JSONPath $.teachers.teacher.studentnames.name[0]
akan menampilkan nilai nama depan secara konsisten, baik XML asli berisi satu elemen name
atau lebih.
Mari kita lihat kembali perilaku default XML ke JSON, lalu pelajari cara mengontrol output menggunakan <TreatAsArray>/<Path>
.
Jika dokumen XML berisi elemen dengan beberapa kemunculan (yang dapat terjadi saat
skema XML menentukan maxOccurs='unbounded'
untuk elemen tersebut), kebijakan XML ke JSON
akan otomatis menempatkan nilai-nilai tersebut dalam 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 terdapat dalam himpunan (array).
Namun, jika hanya satu siswa yang muncul di dokumen XML, kebijakan XML ke JSON akan otomatis memperlakukan nilainya sebagai string tunggal, bukan array string, seperti yang ditunjukkan pada contoh berikut:
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : "student1" } } } }
Pada contoh sebelumnya, data yang serupa dikonversi secara berbeda, sekali ke array, lainnya menjadi string tunggal. Elemen <TreatAsArray>/<Path>
memungkinkan
Anda mengontrol output untuk memastikan nama siswa selalu dikonversi menjadi
array meskipun hanya ada satu nilai. Anda mengonfigurasinya dengan mengidentifikasi Jalur ke elemen yang nilainya ingin Anda konversi menjadi array, seperti ini:
<Options> <TreatAsArray> <Path>teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options>
Konfigurasi di atas akan menghasilkan JSON seperti ini:
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : ["student1"] } } } }
Perhatikan bahwa Student1 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 | T/A |
---|---|
Kehadiran | Opsional |
Jenis | String |
Atribut
<Options> <TreatAsArray> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options>
Atribut | Deskripsi | Kehadiran | Jenis |
---|---|---|---|
buka |
Default: false Menghapus elemen dari output JSON. Gunakan ini untuk menyederhanakan atau meratakan ("membuka") JSON, yang juga mempersingkat JSONPath yang diperlukan untuk mengambil nilai. Misalnya,
alih-alih 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 dan panduan fitur lainnya, lihat artikel Komunitas Google Cloud ini..
<Format>
Format memberi Anda kontrol atas konversi dari XML ke JSON. Masukkan nama template yang telah ditentukan
yang berisi kombinasi tertentu dari elemen Opsi yang dijelaskan dalam topik ini.
Format standar 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 | (tidak ada) |
---|---|
Nilai valid | Salah satu dari kolom berikut:xml.com , yahoo , google , badgerFish |
Kehadiran | Opsional, tetapi Wajib 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 Apigee 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 | Perbaikan |
---|---|---|---|
steps.xmltojson.ExecutionFailed |
ExecutionFailed |
Error ini terjadi jika payload input (XML) kosong atau XML input tidak valid atau formatnya salah. | build |
steps.xmltojson.InCompatibleTypes |
ExecutionFailed |
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 |
ExecutionFailed |
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 |
ExecutionFailed |
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 |
ExecutionFailed |
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 | Perbaikan |
---|---|---|
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 JSONtoXML