Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi

Ne?
Bu politika, mesajları genişletilebilir biçimlendirme dili (XML) biçiminden JavaScript'e dönüştürür Object Notation (JSON) gibi bir araç sayesinde, iletilerin nasıl göründüğünü kontrol edebilirsiniz. dönüştürüldü.
Amacın XML biçimli bir yanıtı JSON biçimli bir yanıta dönüştürmek olduğu varsayıldığında politika, yanıt Akışına eklenir (örneğin, Yanıt / ProxyUç Noktası / PostFlow).
Hakkında
Tipik bir uyumlulaştırma senaryosunda, gelen istek akışındaki JSON'den XML'e politika genellikle giden yanıt akışında bir XML'den JSON'ye politikasıyla eşleştirilir. Politikaları bu şekilde birleştirerek yerel olarak yalnızca XML'i destekleyen arka uç hizmetleri için JSON API gösterilebilir.
API'lerin JSON veya XML'den XML'e ve XML'den JSON'a yapılandırılarak yanıt biçimi dinamik olarak ayarlanabilir. koşullu olarak yürütülmesini sağlamaktır. Akış değişkenleri ve koşulları konusuna bakın. örnek olarak paylaşacağım.
Örnekler
JSON ve XML arasında dönüştürme konusunda ayrıntılı bir tartışma için http://community.apigee.com/articles/1839/converting-between-xml-and-json-what-you-need-to-k.html sayfasına bakın.
Yanıt dönüştürme
<XMLToJSON name="ConvertToJSON"> <Options> </Options> <OutputVariable>response</OutputVariable> <Source>response</Source> </XMLToJSON>
XML'yi dönüştürmek için gereken minimum yapılandırma olan bu yapılandırma,
JSON—kaynak olarak XML biçimli bir yanıt mesajı alır ve ardından
response
ÇıktıDeğişkeni içinde doldurulan JSON biçimli mesaj. Kenar
bu değişkenin içeriğini bir sonraki işleme adımı için mesaj olarak otomatik şekilde kullanır.
Öğe referansı
Bu politikada yapılandırabileceğiniz öğeler ve özellikler aşağıda verilmiştir.
<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>
<XMLtoJSON> özellikler
<XMLtoJSON async="false" continueOnError="false" enabled="true" name="XML-to-JSON-1">
Aşağıdaki tabloda tüm politika üst öğelerinde ortak olan özellikler açıklanmaktadır:
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
name |
Politikanın dahili adı. İsteğe bağlı olarak, politikayı |
Yok | Zorunlu |
continueOnError |
Bir politika başarısız olduğunda hata döndürmesi için Akış yürütmenin bir politikadan sonra bile devam etmesi için |
false | İsteğe bağlı |
enabled |
Politikayı uygulamak için Politikayı devre dışı bırakmak için |
true | İsteğe bağlı |
async |
Bu özelliğin desteği sonlandırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğe
Politikayı name
özelliğine ek olarak
farklı bir doğal dil adına sahip yönetim arayüzü proxy düzenleyicisi.
<DisplayName>Policy Display Name</DisplayName>
Varsayılan |
Yok Bu öğeyi çıkarırsanız politikanın |
---|---|
Varlık | İsteğe bağlı |
Tür | Dize |
<Source> öğe
Dönüştürmek istediğiniz XML mesajını içeren değişken, istek veya yanıt JSON biçimindedir.
Kaynak mesajın HTTP Content-type üstbilgisi şuna ayarlanmalıdır:
application/xml
, aksi takdirde politika zorunlu kılınmaz.
<Source>
tanımlanmazsa mesaj olarak kabul edilir (çözümleri
politika bir istek akışına eklendiğinde veya politika eklendiğinde yanıt almak için
yanıt akışı).
Kaynak değişken çözümlenemezse veya mesaj olmayan bir türe dönüşürse politika hata verir.
<Source>response</Source>
Varsayılan | istek veya yanıt (politikanın API proxy akışına eklendiği yere göre belirlenir) |
Bulunma | İsteğe bağlı |
Tür | mesaj |
<OutputVariable> öğe
XML'den JSON biçimine dönüştürme çıkışını depolar. Bu genellikle kaynaklandığı için, yani genellikle XML yanıtı bir JSON yanıtına dönüştürülür.
XML mesajının yükü ayrıştırılıp JSON'a dönüştürülür. HTTP Content-type ise
XML biçimli mesajın üstbilgisi application/json
olarak ayarlanır.
OutputVariable
belirtilmezse source
şu şekilde kabul edilir:
OutputVariable
Örneğin, source
response
ise
ardından OutputVariable
, varsayılan olarak response
değerine ayarlanır.
<OutputVariable>response</OutputVariable>
Varsayılan | istek veya yanıt (politikanın API proxy akışına eklendiği yere göre belirlenir) |
Bulunma | <Source> öğesinde tanımlanan değişken dize türündeyse bu öğe zorunludur. |
Tür | mesaj |
<Options>
Seçenekler, XML'den JSON'ye dönüştürme işlemi üzerinde kontrol sahibi olmanızı sağlar. Şunu kullanın:
<Options>
grubu, belirli dönüşüm ayarları eklemenize olanak tanır veya
<Format>
öğesi içerir, bu öğe ile ilgili bir şablonunuza referans verebilirsiniz:
önceden tanımlanmış seçeneklerdir. <Options>
ile birlikte kullanılamaz
<Format>
.
<Format>
kullanılmıyorsa <Options>
gereklidir.
<Options>/<RecognizeNumber> öğe
Bu durumda, XML yükündeki sayı alanları orijinal biçimini korur.
<RecognizeNumber>true</RecognizeNumber>
Aşağıdaki XML örneğini göz önünde bulundurun:
<a> <b>100</b> <c>value</c> </a>
true
ise şuna dönüştürür:
{ "a": { "b": 100, "c": "value" } }
false
ise şuna dönüştürür:
{ "a": { "b": "100", "c": "value" } }
Varsayılan | false |
Bulunma | İsteğe bağlı |
Tür | Boole |
<Options>/<RecognizeBoolean> öğe
Değerleri dizeler için geçerlidir.
<RecognizeBoolean>true</RecognizeBoolean>
Aşağıdaki XML örneği için:
<a> <b>true</b> <c>value</c> </a>
true
ise şuna dönüştürür:
{ "a": { "b": true, "c": "value" } }
false
ise şuna dönüştürür:
{ "a": { "b": "true", "c": "value" } }
Varsayılan | false |
Bulunma | İsteğe bağlı |
Tür | Boole |
<Options>/<RecognizeNull> öğe
Boş değerleri boş değerlere dönüştürmenizi sağlar.
<RecognizeNull>true</RecognizeNull>
Aşağıdaki XML için:
<a> <b></b> <c>value</c> </a>
true
ise şuna dönüştürür:
{ "a": { "b": null, "c": "value" } }
false
ise şuna dönüştürür:
{ "a": { "b": {}, "c": "value" } }
Varsayılan | false |
Bulunma | İsteğe bağlı |
Tür | Boole |
<Options>/<NullValue> öğe
Kaynak mesajda tanınan boş değerlerin hangi değere sahip olması gerektiğini belirtir
dönüştürüldü. Varsayılan olarak bu değer null
şeklindedir. Bu seçenek yalnızca
RecognizeNull
doğruysa.
<NullValue>not-present</NullValue>
Varsayılan | null |
Bulunma | İsteğe bağlı |
Tür | Dize |
<Options>/<NamespaceBlockName>
<Options>/<DefaultNamespaceNodeName>
<Options>/<NamespaceSeparator> öğeler
Bu öğeleri birlikte kullanın.
<NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>&</DefaultNamespaceNodeName> <NamespaceSeparator>***</NamespaceSeparator>
Aşağıdaki XML örneğini göz önünde bulundurun:
<a xmlns="http://ns.com" xmlns:ns1="http://ns1.com"> <ns1:b>value</ns1:b> </a>
NamespaceSeparator
belirtilmezse aşağıdaki JSON yapısı şöyledir:
oluşturulma tarihi:
{ "a": { "b": "value" } }
NamespaceBlockName
, DefaultNamespaceNodeName
ve
NamespaceSeparator
; #namespaces
, &
,
ve ***
olduğunda aşağıdaki JSON yapısı oluşturulur:
{ "a": { "#namespaces": { "&": "http://ns.com", "ns1": "http://ns1.com" }, "ns1***b": "value" } }
Varsayılan | Yukarıdaki örneklere bakın. |
Bulunma | İsteğe bağlı Ancak, <NamespaceBlockName> belirtirseniz
iki öğe bulunuyor. |
Tür | Dize |
<Options>/<TextAlwaysAsProperty>
<Options>/<TextNodeName> öğeler
Bu öğeleri birlikte kullanın.
true
değerine ayarlanırsa XML öğesinin içeriği bir dizeye dönüştürülür.
<TextAlwaysAsProperty>true</TextAlwaysAsProperty> <TextNodeName>TEXT</TextNodeName>
Aşağıdaki XML için:
<a> <b>value1</b> <c>value2<d>value3</d>value4</c> </a>
TextAlwaysAsProperty
, true
ve TextNodeName
olarak ayarlanırsa
TEXT
olarak belirtildiğinde şu JSON yapısı oluşturulur:
{ "a": { "b": { "TEXT": "value1" }, "c": { "TEXT": [ "value2", "value4" ], "d": { "TEXT": "value3" } } } }
TextAlwaysAsProperty
, false
ve
TextNodeName
, TEXT
olarak belirtildi. Aşağıdaki JSON yapısı şöyledir:
oluşturulma tarihi:
{ "a": { "b": "value1", "c": { "TEXT": [ "value2", "value4" ], { "d": "value3", } } }
Varsayılan | <TextAlwaysAsProperty> : yanlış<TextNodeName> : Yok |
Bulunma | İsteğe bağlı |
Tür | <TextAlwaysAsProperty> : Boole<TextNodeName> : Dize |
<Options>/<AttributeBlockName>
<Options>/<AttributePrefix> öğeler
Bu öğeleri birlikte kullanın.
Değerleri bir JSON blokunda gruplandırmanıza ve özellik adlarına ön ek eklemenize olanak tanır.
<AttributeBlockName>FOO_BLOCK</AttributeBlockName> <AttributePrefix>BAR_</AttributePrefix>
Aşağıdaki XML örneğini göz önünde bulundurun:
<a attrib1="value1" attrib2="value2"/>
Özelliklerin ikisi de (AttributeBlockName
ve AttributePrefix
)
XML'den JSON'a örneğinde tanımlandığı gibi belirtildiği gibi, aşağıdaki JSON yapısı oluşturulur:
{ "a": { "FOO_BLOCK": { "BAR_attrib1": "value1", "BAR_attrib2": "value2" } } }
Yalnızca AttributeBlockName
belirtilirse aşağıdaki JSON yapısı
oluşturulma tarihi:
{ "a": { "FOO_BLOCK": { "attrib1": "value1", "attrib2": "value2" } } }
Yalnızca AttributePrefix
belirtilirse aşağıdaki JSON yapısı
oluşturulma tarihi:
{ "a": { "BAR_attrib1": "value1", "BAR_attrib2": "value2" } }
İkisi de belirtilmezse aşağıdaki JSON yapısı oluşturulur:
{ "a": { "attrib1": "value1", "attrib2": "value2" } }
Varsayılan | Yukarıdaki örneklere bakın. |
Bulunma | İsteğe bağlı |
Tür | Dize |
<Options>/<OutputPrefix>
<Options>/<OutputSuffix> öğeler
Bu öğeleri birlikte kullanın.
<OutputPrefix>PREFIX_</OutputPrefix> <OutputSuffix>_SUFFIX</OutputSuffix>
Aşağıdaki XML örneğini göz önünde bulundurun:
<a>value</a>
Her iki özellik de (OutputPrefix
ve OutputSuffix
) belirtilirse
XML'den JSON'a örneğinde tanımlandığı gibi aşağıdaki JSON yapısı oluşturulur:
PREFIX_{ "a": "value" }_SUFFIX
Yalnızca OutputPrefix
belirtilirse aşağıdaki JSON yapısı oluşturulur:
PREFIX_{ "a" : "value" }
Yalnızca OutputSuffix
belirtilirse aşağıdaki JSON yapısı oluşturulur:
{ "a" : "value" }_SUFFIX
OutputPrefix
veya OutputSuffix
belirtilmezse aşağıdaki
JSON yapısı oluşturulur:
{ "a": "value" }
Varsayılan | Yukarıdaki örneklere bakın. |
Bulunma | İsteğe bağlı |
Tür | Dize |
<Options>/<StripLevels> öğe
<Options> <StripLevels>4</StripLevels> </Options>
SOAP gibi XML yüklerinde, JSON biçiminde dönüştürülmüştür. Aşağıda, birçok düzey içeren bir SOAP yanıtı örneği verilmiştir:
<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>
Eyalet, Şehir, Açıklama ve Sıcaklık seviyesine ulaşmadan önce 4 seviye vardır.
<StripLevels>
kullanılmadığında, dönüştürülen JSON yanıtı şöyle görünür:
bu:
{ "Envelope" : { "Body" : { "GetCityWeatherByZIPResponse" : { "GetCityWeatherByZIPResult" : { "State" : "CO", "City" : "Denver", "Description" : "Sunny", "Temperature" : "62" } } } } }
JSON yanıtında bu ilk 4 düzeyi çıkarmak isterseniz
<StripLevels>4</StripLevels>
. Bu metrik sayesinde şunları elde edebilirsiniz:
JSON:
{ "State" : "CO", "City" : "Denver", "Description" : "Sunny", "Temperature" : "62" }
Birden çok alt öğe içeren ilk öğeye kadar düzeyleri kaldırabilirsiniz. Ne işe yarar? bunun anlamı nedir? Daha karmaşık bir JSON örneğine bakalım:
{ "Envelope" : { "Body" : { "GetCityForecastByZIPResponse" : { "GetCityForecastByZIPResult" : { "ResponseText" : "City Found", "ForecastResult" : { "Forecast" : [ { "ProbabilityOfPrecipiation" : { "Nighttime" : "00", "Daytime" : 10 } ...
Bu örnekte, 3. Düzey olan GetCityForecastByZIPResponse
, yalnızca bir
alt öğe olarak ayarlanır. Yani <StripLevels>3</StripLevels>
kullanıyorsanız (
JSON dosyası şöyle görünür:
{ "GetCityForecastByZIPResult" : { "ResponseText" : "City Found", "ForecastResult" : { "Forecast" : [ { "ProbabilityOfPrecipiation" : { "Nighttime" : "00", "Daytime" : 10 } ...
GetCityForecastByZIPResult
alan adının birden fazla alt öğesi olduğuna dikkat edin. ABD'de
öğesi birden çok alt öğe içeriyorsa bu son düzeyi,
<StripLevels>4</StripLevels>
, şunları sağlar:
JSON:
{ "ResponseText" : "City Found", "ForecastResult" : { "Forecast" : [ { "ProbabilityOfPrecipiation" : { "Nighttime" : "00", "Daytime" : 10 } ...
4. seviye, birden çok alt seviyenin bulunduğu ilk seviye olduğundan hiçbir seviyeyi çıkaramazsınız. daha düşük olacaktır. Şerit düzeyini 5, 6 ve 7 gibi bir değere ayarlarsanız yanıt alın.
Varsayılan | 0 (seviye çıkarma yok) |
Bulunma | İsteğe bağlı |
Tür | Tamsayı |
<Options>/<TreatAsArray>/<Path> öğe
<Options> <TreatAsArray> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options>
Bu öğe kombinasyonu, bir XML belgesindeki değerlerin JSON dosyasına yerleştirilmesini sağlar.
dizisidir. Bu, örneğin alt öğelerin sayısı farklı olduğunda (birden fazla öğeden
çoklu) içeriyorsa ve değerlerin her zaman bir dizide bulunduğundan emin olmak istersiniz. Bu sayede
çünkü dizideki verileri her seferinde aynı şekilde alabilirsiniz. Örneğin,
örnek: $.teachers.teacher.studentnames[0]
, ilk öğrenci adı değerini alır
dizideki değer sayısından bağımsız olarak uygulanır.
Bir adım geri gidip XML'den JSON'ye varsayılan davranışa bakalım, daha sonra
çıkışı kontrol etmek için <TreatAsArray>/<Path>
kullanabilirsiniz.
Bir XML belgesi, birden çok alt değeri olan (genellikle bir şemaya dayalı olan) bir öğe içerdiğinde
(maxOccurs='unbounded'
) XML'den JSON'ye politikası, otomatik olarak
bu değerleri bir diziye yerleştirir. Örneğin, aşağıdaki XML bloğu
<teacher> <name>teacherA</name> <studentnames> <name>student1</name> <name>student2</name> </studentnames> </teacher>
...özel bir politika olmadan otomatik olarak aşağıdaki JSON biçimine dönüştürülür yapılandırma:
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : [ "student1", "student2" ]} } } }
İki öğrenci adının bir diziye yerleştirildiğine dikkat edin.
Ancak, XML dokümanında yalnızca bir öğrenci görünüyorsa XML'den JSON'ye politikası otomatik olarak değeri aşağıda gösterildiği gibi bir dize dizisi değil, tek bir dize olarak işler: örnek:
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : "student1" } } } }
Önceki örneklerde, benzer veriler farklı bir şekilde, bir zamanlar dizi, diğeri ise
tek bir dize. İşte <TreatAsArray>/<Path>
öğesi burada
çıkışı siz kontrol edersiniz. Örneğin, öğrenci adlarının her zaman
bir diziyi otomatik olarak
değiştirirsiniz. Bunu,
değerini bir diziye koymak istediğiniz bir öğe olacaktır. Örneğin:
<Options> <TreatAsArray> <Path>teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options>
Yukarıdaki yapılandırma, JSON'u şu şekilde yazar:
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : ["student1"] } ] } } }
Öğrenci1'in artık bir dizide olduğuna dikkat edin. Şimdi, ister bir ister birden fazla
şu JSONPath'i kullanarak, bunları kodunuzdaki bir JSON dizisinden alabilirsiniz:
$.teachers.teacher.studentnames.name[0]
.
<Path>
öğesi, aşağıda açıklandığı şekilde bir unwrap
özelliğine de sahiptir:
ele alacağız.
Varsayılan | Yok |
Bulunma | İsteğe bağlı |
Tür | Dize |
Özellikler
<Options> <TreatAsArray> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options>
Özellik | Açıklama | Varlık | Tür |
---|---|---|---|
sarmalamayı aç |
Varsayılan: false Öğeyi, JSON çıkışından kaldırır. Sadeleştirmek veya düzleştirmek ("sarmalama") için bunu kullanın
değerleri almak için gereken JSONPath'i de kısaltan JSON biçiminde bir kod oluşturun. Örneğin,
Aşağıda bir JSON örneği verilmiştir: { "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : [ "student1", "student2" ]}... Bu örnekte, <TreatAsArray> <Path unwrap="true">teachers/teacher</Path> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray>
{ "teachers" : [{ "name" : "teacherA", "studentnames" : ["student1","student2"] }]...
|
İsteğe bağlı | Boole |
Daha fazla örnek ve bir özellik kılavuzu için şu Apigee Topluluğu makalesine bakın: https://community.apigee.com/content/kbentry/33374/new-edge-minifeature-the-treatasarray-option-in-th.html.
<Format>
Biçim, XML'den JSON'ye dönüştürme üzerinde kontrol sahibi olmanızı sağlar. Önceden tanımlanmış bir ad girin
şablon (bu konuda açıklanan seçenek öğelerinin belirli bir kombinasyonunu içeren)
Önceden tanımlanmış biçimler şunlardır: xml.com
, yahoo
, google
,
badgerFish
.
<Format>
öğesini veya <Options>
grubunu kullanın. Kullanamazsınız
<Format>
ve <Options>
.
Aşağıda, önceden tanımlanmış her şablonun biçim tanımları verilmiştir.
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>
Öğe söz dizimi:
<Format>yahoo</Format>
Varsayılan | Kullanılabilir biçimin adını girin:xml.com , yahoo , google , badgerFish |
Bulunma | <Options> kullanılmıyorsa gereklidir. |
Tür | Dize |
Şemalar
Hata referansı
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.xmltojson.ExecutionFailed |
500 | This error occurs when the input payload (XML) is empty or the input XML is invalid or malformed. | build |
steps.xmltojson.InCompatibleType |
500 | This error occurs if the type of the variable defined in the <Source> element and the
<OutputVariable> element are not the same. It is mandatory that the type of the variables
contained within the <Source> element and the <OutputVariable> element matches.
|
build |
steps.xmltojson.InvalidSourceType |
500 | This error occurs if the type of the variable used to define the <Source> element is
invalid.The valid types of variable are message and string. |
build |
steps.xmltojson.OutputVariableIsNotAvailable |
500 | This error occurs if the variable specified in the <Source> element of the XML to
JSON policy is of type string and the <OutputVariable> element is not defined.
The <OutputVariable> element is mandatory when the variable defined in the <Source>
element is of type string. |
build |
steps.xmltojson.SourceUnavailable |
500 |
This error occurs if the message
variable specified in the <Source> element of the XML to JSON policy is either:
|
build |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
EitherOptionOrFormat |
If one of the elements <Options> or <Format> is not
declared in the XML to JSON Policy, then the deployment of the API proxy fails.
|
build |
UnknownFormat |
If the <Format> element within the XML to JSON policy has an unknown
format defined, then the deployment of the API proxy fails. Predefined formats include:
xml.com , yahoo , google , and badgerFish .
|
build |
Fault variables
These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name = "SourceUnavailable" |
xmltojson.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | xmltojson.XMLtoJSON-1.failed = true |
Example error response
{ "fault": { "faultstring": "XMLToJSON[XMLtoJSON-1]: Source xyz is not available", "detail": { "errorcode": "steps.xml2json.SourceUnavailable" } } }
Example fault rule
<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>
İlgili konular
JSON'dan XML'e: JSON'dan XML'e politika