Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
SourceUnavailable
Hata kodu
steps.json2xml.SourceUnavailable
Hata yanıtı gövdesi
{ "fault": { "faultstring": "JSONToXML[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.json2xml.SourceUnavailable" } } }
Örnek hata
{
"fault": {
"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available",
"detail": {
"errorcode": "steps.json2xml.SourceUnavailable"
}
}
}
Neden
Bu hata, JSON'dan XML'ye politikası <Source> öğesinde belirtilen message değişkeni şu durumlarda oluşur:
- Kapsam dışı (politikanın yürütüldüğü belirli akışta kullanılamaz) veya
- Çözülemiyor (tanımlanmamış)
Örneğin, JSON'dan XML'ye politikası istek akışında yürütülmesi gerekiyorsa ancak <Source> öğesi istek akışında bulunmayan response değişkenine ayarlanmışsa bu hata oluşur.
Teşhis
Hatayı içeren JSON'dan XML'e politikayı ve kullanılamayan değişkenin adını belirleyin. Bu öğelerin ikisini de hata yanıtının
faultstringöğesinde bulabilirsiniz. Örneğin, aşağıdakifaultstringiçinde politika adıConvert-JSONToXML, değişken iseresponse'dir:"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"Başarısız olan JSON'dan XML'ye politikası XML'sinde,
<Source>öğesinde ayarlanan değişkenin adının hata dizesinde (yukarıdaki 1. adım) tanımlanan değişken adıyla eşleştiğini doğrulayın. Örneğin, aşağıdaki JSON'dan XML'ye politikası,<Source>öğesinderesponseadlı bir değişken belirtir. Bu değişken,faultstringöğesindekiyle eşleşir:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML"> <DisplayName>Convert-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>request</OutputVariable> <Source>response</Source> </JSONToXML><Source>öğesinde kullanılan değişkenin, JSON'dan XML'ye politikasının yürütüldüğü akışta tanımlanıp tanımlanmadığını ve kullanılabilir olup olmadığını belirleyin.Değişken şu durumlarda:
- Kapsam dışı (politikanın yürütüldüğü belirli akışta kullanılamaz) veya
- Çözülemiyor (tanımlanmamış)
Bu durumda hatanın nedeni budur.
Örneğin, yukarıda gösterilen JSON'dan XML'ye politikası istek akışında yürütülmelidir.
responsedeğişkeninin, JSON'dan XML'ye politikası için<Source>öğesinde kullanıldığını hatırlayın. Yanıt değişkeni yalnızca yanıt akışında kullanılabilir.İstek akışında
responsedeğişkeni bulunmadığından şu hata kodunu alırsınız:steps.json2xml.SourceUnavailable
Çözünürlük
Başarısız olan JSON'dan XML'ye politikası <Source> öğesinde ayarlanan değişkenin tanımlandığından ve politikanın yürütüldüğü akışta bulunduğundan emin olun.
Yukarıda gösterilen örnek JSON'dan XML politikası dönüştürme işlemini düzeltmek için <Source> öğesini, istek akışında mevcut olduğu için request değişkenini kullanacak şekilde değiştirebilirsiniz:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML">
<DisplayName>Convert-JSONToXML</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>request</OutputVariable>
<Source>request</Source>
</JSONToXML>
ExecutionFailed
Hata kodu
steps.json2xml.ExecutionFailed
Hata yanıtı gövdesi
{ "fault": { "faultstring": "JSONToXML[policy_name]: Execution failed due to reason: Expecting { or [ at line 1", "detail": { "errorcode": "steps.json2xml.ExecutionFailed" } } }
Olası nedenler
Bu hatanın olası nedenleri şunlardır:
| Neden | Açıklama |
| Eksik giriş yükü | Giriş yükü (JSON) boş. |
| Geçersiz veya Hatalı Giriş (Invalid or Malformed Input) | JSON'dan XML'ye politikasına iletilen giriş (JSON) geçersiz veya hatalı biçimlendirilmiş. |
Nedeni: Giriş yükü eksik
JSON'dan XML'ye politikası kapsamında, <Source> öğesinde belirtilen değişkenin içeriği (yük) boşsa bu hata oluşur.
Örneğin, JSON'dan XML'ye politikadaki <Source> öğesi request veya response değişkeni olarak ayarlanmışsa ve bir JSON yükü içermesi gerekiyorsa ancak yük boşsa hata oluşur.
Teşhis
Hatayı içeren JSON'dan XML'ye politikayı belirleyin. Bu bilgileri, hata yanıtının
faultstringöğesinde bulabilirsiniz. Örneğin, aşağıdakifaultstringiçinde politika adıConvert-JSONToXML'dir:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"Başarısız olan JSON'dan XML'ye politika XML'sindeki
<Source>öğesini inceleyin ve belirtilen değişkeni belirleyin. Örneğin, aşağıdaki JSON'dan XML'ye politikası,<Source>öğesinirequestolarak ayarlar:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML"> <DisplayName>Convert-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>request</OutputVariable> <Source>request</Source> </JSONToXML>Politikadaki
<Source>öğesi için belirtilen değişkenin boş olup olmadığını kontrol edin. Boşsa hatanın nedeni budur.Yukarıda gösterilen JSON'dan XML'e dönüştürme politikasında, istemci tarafından gönderilen istek yükü (yani istek gövdesi) boştur.
Örneğin:
curl -v "http://<org>-<env>.apigee.net/v1/testjsontoxml" -H "Content-Type: application/json"JSON yanıtı yükü boş olduğu için şu hata kodunu alırsınız:
steps.json2xml.ExecutionFailedBu hata,
<Source>öğesi yanıt olarak ayarlanmışsa ancak arka uç sunucusu tarafından boş bir yük iletilirse de oluşabilir.
Çözünürlük
<Source> öğesinde JSON'dan XML'ye politikasına iletilen girişin geçerli bir JSON yükü ve boş olmayan bir değer olduğundan emin olun.
Örnek JSON'dan XML'ye politikasıyla ilgili sorunu düzeltmek için geçerli bir JSON yükü iletin. Örneğin:
Aşağıdaki içeriğe sahip
city.jsonadlı bir dosya oluşturun:{ "Name":"Apigee", "City":"Bengaluru", "Pincode":"560016" }Aşağıdaki gibi bir cURL komutu kullanarak API çağrısı yapın:
curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/json" -X POST -d @company.json
Neden: Geçersiz veya Yanlış Biçimlendirilmiş Giriş
JSON'dan XML'ye politikası, geçersiz veya hatalı biçimlendirilmiş girişi ayrıştırırsa bu hatayı alırsınız.
Örneğin, aşağıdaki geçersiz JSON, JSON'dan XML'ye politikasına giriş olarak sağlanırsa
[
"args": ["name" : "Google" ]
]
hatasını alırsınız:
"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Teşhis
Hatayı içeren JSON'dan XML'ye politikayı belirleyin. Bu bilgileri, hata yanıtının
faultstringöğesinde bulabilirsiniz. Örneğin, aşağıdakifaultstringiçinde politika adıConvert-JSONToXML'dir:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"Başarısız olan JSON'dan XML'ye politikası XML'sinde belirtilen
<Source>öğesini inceleyin. Örneğin, aşağıdaki JSON'dan XML'ye politikada<Source>öğesirequestdeğişkenine ayarlanmıştır:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML"> <DisplayName>Convert-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>request</OutputVariable> <Source>request</Source> </JSONToXML><Source>öğesinde belirtilen girişin geçerli bir JSON yükü olup olmadığını doğrulayın. Giriş geçersizse veya hatalı biçimlendirilmişse hatanın nedeni budur.Aşağıdaki geçersiz JSON'un politikaya iletildiğini varsayalım.
[ "args": ["name" : "Google" ] ]İsteğin nasıl iletildiğini gösteren örnek API çağrısını aşağıda bulabilirsiniz:
curl -v "http://<org>-<env>.apigee.net/v1/testjsontoxml" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "Google" ]]'İstekle iletilen JSON yükü, JSON nesnesi köşeli parantezlerle ([ ]) başladığı ve bittiği için geçersiz. Bu nedenle, şu hata kodunu alıyorsunuz:
steps.json2xml.ExecutionFailedBu hata,
<Source>öğesi yanıt olarak ayarlanmışsa ancak JSON yanıtı yükü geçersiz veya hatalı biçimlendirilmişse de oluşabilir.
Çözünürlük
<Source> öğesinde JSON'dan XML'ye politikasına iletilen girişin geçerli ve hatalı biçimlendirilmemiş olduğundan emin olun.
Yukarıda bahsedilen örnek JSON'dan XML'ye politika ile ilgili sorunu düzeltmek için geçerli bir JSON yükü isteğini aşağıdaki gibi iletin:
{
"args" : {
"name" : "Google"
}
}
OutputVariableIsNotAvailable
Hata kodu
steps.json2xml.OutputVariableIsNotAvailable
Hata yanıtı gövdesi
{ "fault": { "faultstring": "JSONToXML[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.json2xml.OutputVariableIsNotAvailable" } } }
Örnek hata
{
"fault": {
"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available.",
"detail": {
"errorcode": "steps.json2xml.OutputVariableIsNotAvailable"
}
}
}
Neden
Bu hata, JSON'dan XML'ye Politikası'nın <Source> öğesinde belirtilen değişkenin türü dizeyse ve <OutputVariable> öğesi tanımlanmamışsa oluşur. <Source> öğesinde tanımlanan değişkenin türü dize olduğunda <OutputVariable> öğesi zorunludur.
Teşhis
Hatayı içeren JSON'dan XML'ye dönüştürme politikasını belirleyin. Bu bilgiyi hata yanıtının
faultstringöğesinde bulabilirsiniz. Örneğin, aşağıdakifaultstringiçinde politika adıCheck-JSONToXML'dir:"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."Başarısız olan JSON'dan XML'ye politikası doğrulamasında
<OutputVariable>öğesinin eksik olup olmadığını kontrol edin.Aşağıdaki örnek JSONToXML politikasında
<OutputVariable>öğesi eksik:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML"> <DisplayName>Check-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <Source>PostalCode</Source> </JSONToXML><Source>öğesinde belirtilen değişkenin türünü belirleyin:- API proxy'sinde değişkenin ilk tanımlandığı kodu bulun.
- Değişkenin ilk olarak tanımlandığı ve doldurulduğu politikayı belirledikten sonra, bu değişkenin türünü aşağıdaki gibi belirlemeniz gerekir:
- Tür özelliğinin değerini (varsa) kontrol edin.
- Tür özelliği yoksa değişkenin dize olduğu kabul edilir.
- Değişkenin türü dize ise hatanın nedeni budur. Yaygın değişkenler ve türleri hakkında bilgiyi Değişkenler referansı bölümünde bulabilirsiniz.
Örneğin, yukarıdaki JSON'dan XML'ye politikadaki
PostalCodedeğişkenine bakın.Örneğin, aşağıda gösterildiği gibi
PostalCodeadlı bir değişkene değer atamak için bir Assign Message politikasının kullanıldığını düşünün:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_PostalCode"> <DisplayName>Assign_PostalCode</DisplayName> <Properties/> <AssignVariable> <Name>PostalCode</Name> <Value>{"value":"56008"}</Value> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage><AssignVariable>içinde ayarlanan değişken türünün dize olduğunu unutmayın. Bu nedenle,PostalCodedeğişkeni dize türündedir.Şimdi,
PostalCodedeğişkeninin JSONToXML politikasının<Source>öğesinde kullanıldığını hatırlayın:<Source>PostalCode</Source>PostalCodedize türünde olduğundan ve<OutputVariable>öğesi eksik olduğundan şu hata kodunu alırsınız:steps.json2xml.OutputVariableIsNotAvailable
Çözünürlük
JSONToXML politikasının <Source> öğesinde belirtilen değişkenin türü dize ise <OutputVariable> öğesinin politika içinde tanımlandığından emin olun.
Yukarıda bahsedilen JSONToXML politikasını düzeltmek için aşağıda gösterildiği gibi bir <OutputVariable> öğesi ekleyin.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML">
<DisplayName>Check-JSONToXML</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>response</OutputVariable>
<Source>PostalCode</Source>
</JSONToXML>
InCompatibleTypes
Hata kodu
steps.json2xml.InCompatibleTypes
Hata yanıtı gövdesi
{ "fault": { "faultstring": "JSONToXML[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.json2xml.InCompatibleTypes" } } }
Örnek hata
{
"fault": {
"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.json2xml.InCompatibleTypes"
}
}
}
Neden
Bu hata, <Source> öğesinde ve <OutputVariable> öğesinde tanımlanan değişkenin türü aynı değilse oluşur. <Source> öğesi ve <OutputVariable> öğesinde bulunan değişkenlerin türünün eşleşmesi zorunludur.
Geçerli türler message ve string'dir.
Teşhis
Hatayı içeren JSON'dan XML'ye dönüştürme politikasını belirleyin. Bu bilgiyi hata yanıtının
faultstringöğesinde bulabilirsiniz. Örneğin, aşağıdakifaultstringiçinde politika adıJSONToXML_checktype'dir:"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type."Başarısız olan JSON'dan XML'ye Politikası notunda
<OutputVariable>ve<Source>içinde belirtilen değerleri not edin.Aşağıdaki örnek politikayı inceleyin:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML_checktype"> <DisplayName>JSONToXML_checktype</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>response</OutputVariable> <Source>PostalCode</Source> </JSONToXML><Source>ve<OutputVariable>öğelerinde belirtilen değişkenin türünü belirleyin:- API proxy'sinde bu değişkenlerin her birinin ilk olarak tanımlandığı kodu bulun.
- Değişkenin ilk olarak tanımlandığı ve doldurulduğu politikayı belirledikten sonra, bu değişkenin türünü aşağıdaki gibi belirlemeniz gerekir:
- Tür özelliğinin değerini (varsa) kontrol edin.
- Tür özelliği yoksa değişkenin dize olduğu kabul edilir.
<Source>içinde belirtilen değişkenin türü dize,<OutputVariable>türü ise iletiyse veya bunun tam tersi geçerliyse hatanın nedeni budur. Yaygın değişkenler ve türleri hakkında bilgiyi Değişkenler referansı bölümünde bulabilirsiniz.
Örneğin, aşağıda gösterildiği gibi
PostalCodeadlı bir değişkene değer atamak için kullanılan bir Assign Message politikasını ele alalım:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_PostalCode"> <DisplayName>Assign_PostalCode</DisplayName> <Properties/> <AssignVariable> <Name>PostalCode</Name> <Value>{"value":"56008"}</Value> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage><AssignVariable>içinde ayarlanan değişken türünün dize olduğunu, dolayısıylaPostalCodedeğişkeninin dize türünde olduğunu unutmayın.Şimdi,
PostalCodedeğişkeninin JSONToXML politikasının<Source>öğesinde kullanıldığını hatırlayın:<Source>PostalCode</Source>Benzer şekilde,
responsedeğişkeninin JSONToXML politikasının<OutputVariable>öğesinde kullanıldığını hatırlayın:<OutputVariable>response</OutputVariable>PostalCodedize türünde,responsedeğişkeni ise ileti türünde olduğundan türler uyumlu değildir ve şu hata kodunu alırsınız:steps.json2xml.InCompatibleTypesYukarıdaki hata,
<Source>öğesindeki değişkenmessagetüründe ancak<OutputVariable>öğesindeki değişken dize türünde olduğunda da oluşabilir.
Çözünürlük
<Source> öğesinde ve <OutputVariable> öğesinde tanımlanan değişken türünün her zaman aynı olduğundan emin olun. <Source> öğesi ve <OutputVariable> öğesi içinde yer alan değişkenlerin türünün eşleşmesi zorunludur. Yani, hem <Source> hem de <OutputVariable> öğelerinin türünün dize veya mesaj türü olduğundan emin olun.
Yukarıda bahsedilen JSON'dan XML'e politikayı düzeltmek için Assign Message Policy'yi kullanarak PostalCode_output türünde başka bir değişken tanımlayabilir ve bu değişkeni JSON'dan XML'e politikasının <OutputVariable> öğesinde kullanabilirsiniz.
Değiştirilmiş ileti atama politikası:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_PostalCode">
<DisplayName>Assign_PostalCode</DisplayName>
<Properties/>
<AssignVariable>
<Name>PostalCode</Name>
<Value>{"value":"56008"}</Value>
<Ref/>
</AssignVariable>
<AssignVariable>
<Name>PostalCode_output</Name>
<Ref/>
</AssignVariable>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>
Değiştirilmiş JSONToXML politikası:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML">
<DisplayName>JSONToXML_checktype</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>PostalCode_output</OutputVariable>
<Source>PostalCode</Source>
</JSONToXML>
InvalidSourceType
Hata kodu
steps.json2xml.InvalidSourceType
Hata yanıtı gövdesi
{ "fault": { "faultstring": "JSONToXML[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.json2xml.InvalidSourceType" } } }
Örnek hata
{
"fault": {
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string].",
"detail": {
"errorcode": "steps.json2xml.InvalidSourceType"
}
}
}
Neden
Bu hata, <Source> öğesini tanımlamak için kullanılan değişkenin türü geçersizse oluşur.Geçerli değişken türleri message ve string'dir.
Teşhis
JSON'dan XML'ye politikası için kullanılan geçersiz kaynak türünü belirleyin. Bu bilgileri hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada geçersiz tür Integer'dır.
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."Hatayı içeren API proxy'sindeki tüm JSON-XML politikalarını inceleyin. Başarısız olan JSON'dan XML'ye politikada,
<Source>içinde belirtilen değişkenin adını not edin.<Source>öğesinde EmployeeID adlı değişkenin belirtildiği örnek bir politikayı aşağıda bulabilirsiniz:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML">
<DisplayName>Check_SourceType</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>request</OutputVariable>
<Source>EmployeeID</Source>
</JSONToXML>
<Source>öğesinde belirtilen değişkenin türünü belirleyin:- Bu değişkenin ilk olarak tanımlandığı API proxy'sindeki kodu bulun.
- Değişkenin ilk olarak tanımlandığı ve doldurulduğu politikayı belirledikten sonra, bu değişkenin türünü aşağıdaki gibi belirlemeniz gerekir:
- Tür özelliğinin değerini (varsa) kontrol edin.
- Tür özelliği yoksa değişkenin dize olduğu kabul edilir.
<Source>içinde belirtilen değişkenin türü ne ileti ne de dize türü ise hatanın nedeni budur. Yaygın değişkenler ve türleri hakkında bilgiyi Değişkenler referansı bölümünde bulabilirsiniz.
Örneğin, ExtractVariables politikasının bir JSON yükünden değeri çıkarmak ve değeri aşağıdaki gibi tam sayı türünde
EmployeeIDdeğişkenine ayarlamak için kullanıldığını varsayalım:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables"> <Source>request</Source> <JSONPayload> <Variable name="EmployeeID" type="integer"> <JSONPath>$.ID</JSONPath> </Variable> </JSONPayload> </ExtractVariables>Şimdi,
EmployeeIDdeğişkeninin JSONToXML politikasının<Source>öğesinde kullanıldığını hatırlayın:<Source>EmployeeID</Source>Bu değişkenin türü
Integerolduğundan (geçerli bir<Source>türü değildir) API proxy'si şu hatayla başarısız olur:steps.json2xml.InvalidSourceType
Çözünürlük
<Source> öğesini belirtmek için kullanılan değişkenin türünün geçerli olduğundan emin olun. Geçerli <Source> türleri message ve string'dir.
JSONToXML politikasıyla ilgili yukarıdaki hatayı önlemek için ileti türünde olan request değişkenini veya geçerli bir JSON yükü olan başka bir dizeyi kullanabilirsiniz.