Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Ne
Bu politika, mesajları genişletilebilir işaretleme dili (XML) biçiminden JavaScript Object Notation (JSON) biçimine dönüştürerek size mesajların nasıl dönüştürüldüğünü kontrol etmeniz için çeşitli seçenekler sunar.
Amacın XML biçimli bir yanıtı JSON biçimli yanıta dönüştürmek olduğu varsayıldığında, politika bir yanıt akışına (ör. Response / ProxyEndpoint/PostFlow) eklenir.
Hakkında
Tipik bir uyumlulaştırma senaryosunda, gelen istek akışındaki bir JSON-XML politikası genellikle giden yanıt akışında XML - JSON politikası ile eşleştirilir. Politikaları bu şekilde birleştirdiğinizde JSON API, yerel olarak yalnızca XML'i destekleyen arka uç hizmetleri için sunulabilir.
API'lerin JSON veya XML gerektiren çeşitli istemci uygulamaları tarafından tüketildiği senaryolarda yanıt biçimi, JSON'u XML'den XML'e ve XML'den JSON'e, koşullu olarak yürütülecek şekilde yapılandırarak dinamik olarak ayarlanabilir. Bu senaryonun uygulanması için Akış değişkenleri ve koşulları bölümüne bakın.
Sana Özel
JSON ve XML arasında dönüştürmeyle ilgili ayrıntılı bilgi için http://community.apigee.com/articles/1839/converting-between-xml-and-json-what-you-need-to-k.html adresini ziyaret edin.
Bir yanıtı dönüştürme
<XMLToJSON name="ConvertToJSON"> <Options> </Options> <OutputVariable>response</OutputVariable> <Source>response</Source> </XMLToJSON>
XML'yi JSON'a dönüştürmek için gereken minimum yapılandırma olan bu yapılandırma, kaynak olarak XML biçimli bir yanıt mesajı alır ve ardından response
Çıkış Değişkeni'nde doldurulan JSON biçiminde bir mesaj oluşturur. Edge, bir sonraki işleme adımında mesaj olarak bu değişkenin içeriğini otomatik olarak 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> özellikleri
<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ı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için |
Yok | Gerekli |
continueOnError |
Bir politika başarısız olduğunda hata döndürülmesi için Bir politika başarısız olduktan sonra bile akış yürütülmesinin 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 özellik kullanımdan kaldırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğesi
Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için name
özelliğine ek olarak kullanın.
<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> öğesi
JSON biçimine dönüştürmek istediğiniz XML mesajını içeren değişken, istek veya yanıt.
Kaynak mesajın HTTP Content-type üstbilgisi application/xml
olarak ayarlanmalıdır. Aksi takdirde politika uygulanmaz.
<Source>
tanımlanmazsa mesaj olarak değerlendirilir (politika bir istek akışına eklendiğinde istek akışı veya politika bir yanıt akışına eklendiğinde yanıt olarak çözümlenir).
Kaynak değişken çözümlenemezse veya ileti olmayan bir türe çözümlenirse politika bir hata bildirir.
<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 |
<ExitVariable> öğesi
XML'den JSON biçimine dönüştürme işleminin çıkışını depolar. Bu genellikle kaynakla aynı değerdir. 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 ve XML biçimli mesajın HTTP Content-type üstbilgisi application/json
olarak ayarlanır.
OutputVariable
belirtilmezse source
, OutputVariable
olarak değerlendirilir. Örneğin, source
response
ise OutputVariable
varsayılan olarak response
olur.
<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ünde olduğunda bu öğe zorunludur. |
Tür | mesaj |
<Seçenekler>
Seçenekler, XML'den JSON'a dönüşüm üzerinde kontrol sahibi olmanızı sağlar. Belirli dönüşüm ayarları eklemenizi sağlayan <Options>
grubunu veya önceden tanımlanmış seçenekler şablonuna referans vermenizi sağlayan <Format>
öğesini kullanın. Hem <Options>
hem de <Format>
kullanılamaz.
<Format>
kullanmıyorsanız <Options>
gereklidir.
<Options>/<RecognizeNumber> öğesi
Değer true ise XML yükündeki sayı alanları orijinal biçimlerini korur.
<RecognizeNumber>true</RecognizeNumber>
Aşağıdaki XML örneğini inceleyin:
<a> <b>100</b> <c>value</c> </a>
true
ise şu şekilde dönüştürülür:
{ "a": { "b": 100, "c": "value" } }
false
ise şu şekilde dönüştürülür:
{ "a": { "b": "100", "c": "value" } }
Varsayılan | false |
Bulunma | İsteğe bağlı |
Tür | Boole |
<Options>/<RecognizeBoole> öğesi
Dönüşümün, değerleri dizeye dönüştürmek yerine boole doğru/yanlış değerlerini korumasını sağlar.
<RecognizeBoolean>true</RecognizeBoolean>
Aşağıdaki XML örneği için:
<a> <b>true</b> <c>value</c> </a>
true
ise şu şekilde dönüştürülür:
{ "a": { "b": true, "c": "value" } }
false
ise şu şekilde dönüştürülür:
{ "a": { "b": "true", "c": "value" } }
Varsayılan | false |
Bulunma | İsteğe bağlı |
Tür | Boole |
<Options>/<RecognizeNull> öğesi
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 şu şekilde dönüştürülür:
{ "a": { "b": null, "c": "value" } }
false
ise şu şekilde dönüştürülür:
{ "a": { "b": {}, "c": "value" } }
Varsayılan | false |
Bulunma | İsteğe bağlı |
Tür | Boole |
<Options>/<NullValue> öğesi
Kaynak mesajda tanınan boş değerlerin hangi değere dönüştürülmesi gerektiğini belirtir. Varsayılan olarak bu değer null
'dir. Bu seçenek yalnızca RecognizeNull
doğruysa geçerli olur.
<NullValue>not-present</NullValue>
Varsayılan | null |
Bulunma | İsteğe bağlı |
Tür | Dize |
<Options>/<NamespaceBlockName>
<Options>/<DefaultNamespaceNodeName>
<Options>/<NamespaceSeparator> öğeleri
Bu öğeleri birlikte kullanın.
<NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>&</DefaultNamespaceNodeName> <NamespaceSeparator>***</NamespaceSeparator>
Aşağıdaki XML örneğini inceleyin:
<a xmlns="http://ns.com" xmlns:ns1="http://ns1.com"> <ns1:b>value</ns1:b> </a>
NamespaceSeparator
belirtilmezse aşağıdaki JSON yapısı oluşturulur:
{ "a": { "b": "value" } }
NamespaceBlockName
, DefaultNamespaceNodeName
ve NamespaceSeparator
öğeleri sırasıyla #namespaces
, &
ve ***
olarak belirtilirse 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ı Bununla birlikte, <NamespaceBlockName> değerini belirtirseniz diğer iki öğeyi de belirtmeniz gerekir. |
Tür | Dize |
<Options>/<Text AlwaysAsproperty>
<Options>/<TextNodeName> öğeleri
Bu öğeleri birlikte kullanın.
true
değerine ayarlanırsa XML öğesinin içeriği bir dize özelliğine 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
olarak ayarlanırsa ve TextNodeName
, TEXT
olarak belirtilirse aşağıdaki JSON yapısı oluşturulur:
{ "a": { "b": { "TEXT": "value1" }, "c": { "TEXT": [ "value2", "value4" ], "d": { "TEXT": "value3" } } } }
TextAlwaysAsProperty
, false
olarak ayarlanırsa ve TextNodeName
, TEXT
olarak belirtilirse aşağıdaki JSON yapısı oluşturulur:
{ "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> öğeleri
Bu öğeleri birlikte kullanın.
Değerleri bir JSON bloğunda gruplandırmanıza ve özellik adlarına önek eklemenize olanak tanır.
<AttributeBlockName>FOO_BLOCK</AttributeBlockName> <AttributePrefix>BAR_</AttributePrefix>
Aşağıdaki XML örneğini inceleyin:
<a attrib1="value1" attrib2="value2"/>
Her iki özellik de (AttributeBlockName
ve AttributePrefix
) XML'den JSON'a geçiş örneğinde tanımlandığı gibi belirtildiyse 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şturulur:
{ "a": { "FOO_BLOCK": { "attrib1": "value1", "attrib2": "value2" } } }
Yalnızca AttributePrefix
belirtilirse aşağıdaki JSON yapısı oluşturulur:
{ "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>/<ExitPrefix>
<Options>/<ExitSuffix> öğeleri
Bu öğeleri birlikte kullanın.
<OutputPrefix>PREFIX_</OutputPrefix> <OutputSuffix>_SUFFIX</OutputSuffix>
Aşağıdaki XML örneğini inceleyin:
<a>value</a>
Her iki özellik de (OutputPrefix
ve OutputSuffix
) XML'den JSON'a geçiş örneğinde tanımlandığı gibi belirtildiyse 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> öğesi
<Options> <StripLevels>4</StripLevels> </Options>
Bazen SOAP gibi XML yükleri, dönüştürülen JSON'a dahil etmek istemediğiniz birçok üst düzeye sahip olabilir. Birçok düzey içeren bir SOAP yanıtı örneği:
<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 seviyelerine ulaşmadan önce 4 seviye vardır.
<StripLevels>
kullanılmadığında dönüştürülen JSON yanıtı şöyle görünür:
{ "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>
parametresini ayarlayarak aşağıdaki JSON değerini alırsınız:
{ "State" : "CO", "City" : "Denver", "Description" : "Sunny", "Temperature" : "62" }
Birden fazla alt öğe içeren ilk öğeye kadar düzeyleri kaldırabilirsiniz. Bu ne anlama geliyor? 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, yalnızca bir alt öğesi olan GetCityForecastByZIPResponse
'dir. Yani <StripLevels>3</StripLevels>
(ilk üç seviyeyi kaldırın) kullanırsanız JSON aşağıdaki gibi görünür:
{ "GetCityForecastByZIPResult" : { "ResponseText" : "City Found", "ForecastResult" : { "Forecast" : [ { "ProbabilityOfPrecipiation" : { "Nighttime" : "00", "Daytime" : 10 } ...
GetCityForecastByZIPResult
öğesinin birden fazla alt öğesi olduğuna dikkat edin. Birden çok alt öğe içeren ilk öğe olduğundan bu son düzeyi, <StripLevels>4</StripLevels>
kullanarak çıkartabilirsiniz. Bunu yaptığınızda aşağıdaki JSON sağlanır:
{ "ResponseText" : "City Found", "ForecastResult" : { "Forecast" : [ { "ProbabilityOfPrecipiation" : { "Nighttime" : "00", "Daytime" : 10 } ...
4. düzey, birden çok alt öğe içeren ilk seviye olduğundan bundan daha düşük düzeyleri kaldıramazsınız. Şerit düzeyini 5, 6, 7 vb. olarak ayarlarsanız yukarıdaki yanıtı almaya devam edersiniz.
Varsayılan | 0 (seviye çıkarma yok) |
Bulunma | İsteğe bağlı |
Tür | Tamsayı |
<Options>/<TreatAsArray>/<Path> öğesi
<Options> <TreatAsArray> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options>
Bu öğe kombinasyonu, bir XML belgesindeki değerlerin bir JSON dizisine yerleştirilmesini sağlar. Örneğin, alt öğelerin sayısının değişebileceği (birden birden çoka) ve değerlerin her zaman bir dizide yer aldığından emin olmak istediğinizde bu yöntem faydalı olur. Bu yöntem, her zaman diziden aynı şekilde veri alabilmeniz için kodunuzun sabit kalmasına yardımcı olur. Örneğin: $.teachers.teacher.studentnames[0]
, dizideki değer sayısından bağımsız olarak dizideki ilk öğrenci adı değerini alır.
Bir adım geri gidelim ve XML - JSON varsayılan davranışına göz atalım ve <TreatAsArray>/<Path>
kullanarak çıkışı nasıl kontrol edeceğinizi keşfedin.
Bir XML belgesi birden çok alt değere sahip bir öğe içerdiğinde (genellikle öğenin maxOccurs='unbounded'
öğesinin olduğu bir şemaya dayanır) XML'den JSON'a politikası, bu değerleri otomatik olarak 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 yapılandırması olmadan otomatik olarak aşağıdaki JSON biçimine dönüştürülür:
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : [ "student1", "student2" ]} } } }
İki öğrenci adının bir diziye konduğuna dikkat edin.
Ancak, XML belgesinde yalnızca bir öğrenci görünüyorsa XML'den JSON'a politikası, değeri, aşağıdaki örnekte gösterildiği gibi otomatik olarak bir dize dizisi değil, tek bir dize olarak işler:
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : "student1" } } } }
Önceki örneklerde, benzer veriler bir kez dizi, diğeri tek bir dize olarak farklı şekilde dönüştürülmüştür. Burada <TreatAsArray>/<Path>
öğesi, çıkışı kontrol etmenizi sağlar. Örneğin, tek bir değer olsa bile öğrenci adlarının her zaman bir diziye yerleştirilmesini sağlayabilirsiniz. Bunu, değerlerini bir diziye yerleştirmek istediğiniz öğenin Yolunu tanımlayarak yapılandırırsınız. Örneğin:
<Options> <TreatAsArray> <Path>teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options>
Yukarıdaki yapılandırmada JSON şu şekilde yazılır:
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : ["student1"] } ] } } }
öğrenci1'in artık bir dizide olduğuna dikkat edin. Artık, bir veya daha fazla öğrenci olduğundan bağımsız olarak bunları aşağıdaki JSONPath kullanarak kodunuzdaki bir JSON dizisinden alabilirsiniz:
$.teachers.teacher.studentnames.name[0]
<Path>
öğesinin, bir sonraki bölümde açıklanan unwrap
özelliği de vardır.
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 |
---|---|---|---|
sarmayı açmak |
Varsayılan: false Öğeyi JSON çıkışından kaldırır. JSON dosyasını sadeleştirmek veya düzleştirmek ("sarmalarını açmak") için bunu kullanın. Bu işlem, değerleri almak için gereken JSONPath'i de kısaltır. Ö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 adım adım açıklamalı özellik için şu Apigee Topluluğu makalesini inceleyin: https://community.apigee.com/content/kbentry/33374/new-edge-minifeature-the-treatasarray-option-in-th.html.
<Biçim>
Biçim, XML'den JSON'a dönüşüm üzerinde kontrol sahibi olmanızı sağlar. Bu konuda açıklanan Seçenekler öğelerinin belirli bir kombinasyonunu içeren önceden tanımlanmış bir şablonun adını girin.
Önceden tanımlanmış biçimler şunları içerir: xml.com
, yahoo
, google
,
badgerFish
.
<Format>
öğesini veya <Options>
grubunu kullanın. Hem <Format>
hem de <Options>
kullanılamaz.
Önceden tanımlanmış her bir şablonun Biçim tanımları aşağıda 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 bir biçimin adını girin:xml.com , yahoo , google , badgerFish |
Bulunma | <Options> kullanılmıyorsa zorunludur. |
Tür | Dize |
Şemalar
Hata referansı
Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.
Çalışma zamanı hataları
Politika yürütüldüğünde bu hatalar ortaya çıkabilir.
Hata kodu | HTTP durumu | Neden | Düzelt |
---|---|---|---|
steps.xmltojson.ExecutionFailed |
500 | Bu hata, giriş yükü (XML) boş olduğunda veya giriş XML'i geçersiz ya da hatalı olduğunda ortaya çıkar. | build |
steps.xmltojson.InCompatibleType |
500 | Bu hata, <Source> öğesinde ve <OutputVariable> öğesinde tanımlanan değişkenin türü aynı değilse ortaya çıkar. <Source> öğesi ve <OutputVariable> öğesi içinde yer alan değişkenlerin türünün eşleşmesi zorunludur.
|
build |
steps.xmltojson.InvalidSourceType |
500 | Bu hata, <Source> öğesini tanımlamak için kullanılan değişken türü geçersizse ortaya çıkar.Geçerli değişken türleri mesaj ve dizedir. |
build |
steps.xmltojson.OutputVariableIsNotAvailable |
500 | Bu hata, XML'den JSON'a Geçiş politikasının <Source> öğesinde belirtilen değişken dize türündeyse ve <OutputVariable> öğesi tanımlı değilse ortaya çıkar.
<Source> öğesinde tanımlanan değişken dize türündeyse <OutputVariable> öğesi zorunludur. |
build |
steps.xmltojson.SourceUnavailable |
500 |
Bu hata, XML'den JSON'a geçiş politikasının <Source> öğesinde belirtilen message değişkeni şunlardan biriyse ortaya çıkar:
|
build |
Dağıtım hataları
Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda ortaya çıkabilir.
Hata adı | Neden | Düzelt |
---|---|---|
EitherOptionOrFormat |
<Options> veya <Format> öğelerinden biri XML'den JSON'a Geçiş Politikası'nda tanımlanmamışsa API proxy'sinin dağıtımı başarısız olur.
|
build |
UnknownFormat |
XML'den JSON'a geçiş politikasındaki <Format> öğesi için bilinmeyen bir biçim tanımlanmışsa API proxy'sinin dağıtımı başarısız olur. Önceden tanımlanmış biçimler şunları içerir: xml.com , yahoo , google ve badgerFish .
|
build |
Hata değişkenleri
Bu değişkenler, bir çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.
Değişkenler | Konum | Örnek |
---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelenen hatanın adıdır. Hata adı, hata kodunun son kısmıdır. | fault.name = "SourceUnavailable" |
xmltojson.policy_name.failed |
policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. | xmltojson.XMLtoJSON-1.failed = true |
Örnek hata yanıtı
{ "fault": { "faultstring": "XMLToJSON[XMLtoJSON-1]: Source xyz is not available", "detail": { "errorcode": "steps.xml2json.SourceUnavailable" } } }
Hata kuralı örneği
<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'den XML'e politika