如何区分整数值数组与对象数组

问题描述 投票:0回答:1

问题:如何区分属性“MonthQuota”和“Forecast”?

在我的真实程序中,我使用 JsonObject 类和动态 ProDataSet,它是一个递归解析程序。任何建议请考虑以上几点。

我正在尝试解析一个 JSON,其中包含一个带有数值数组的属性(“MonthQuota”)和另一个带有对象数组的第二个属性(“Forcast”)。
这是 JSON:

{  
        "ttSalesRep": [  
            {  
                "SalesRep": "BBB",  
                "RepName": "Brawn, Bubba B.",  
                "Region": "East",  
                "MonthQuota": [  
                    1600,1648,1697,1748,1800,1854  
                ],  
                "Forcast": [  
                    {
                        "Month1": "Enero",  
                        "Amont1": 111.1  
                    },  
                    {  
                      "Month1": "Marzo",  
                      "Amont1": 111.2  
                    }  
                ]  
            }  
        ]  
    }  

因为我必须以不同的方式解析这两个属性,所以我尝试使用 GetType 方法。但我对“MonthQuota”和“Forcast”属性有相同的结果:GetType = 5。 这是一个显示我的问题的小程序:

DEFINE VARIABLE myParser     AS ObjectModelParser NO-UNDO.  
DEFINE VARIABLE myConstruct  AS JsonConstruct     NO-UNDO.  
DEFINE VARIABLE myJsonObj    AS JsonObject        NO-UNDO.  
DEFINE VARIABLE myArray      AS CHAR EXTENT       NO-UNDO.  
DEFINE VARIABLE my_JSON_File AS CHARACTER         NO-UNDO.  
  
  
my_JSON_File = "myJsonFile.json".  
  
myParser    = NEW ObjectModelParser().  
myConstruct = myParser:ParseFile(my_JSON_File).  
myJsonObj   = CAST(myConstruct, JsonObject).  
  
myArray = myJsonObj:GetJsonArray("ttSalesRep"):GetJsonObject(1):GetNames().  
MESSAGE  
    myArray[4] "=" myJsonObj:GetJsonArray("ttSalesRep"):GetJsonObject(1):GetType(myArray[4]) SKIP  
    myArray[5] "=" myJsonObj:GetJsonArray("ttSalesRep"):GetJsonObject(1):GetType(myArray[5]) SKIP  
VIEW-AS ALERT-BOX.  
openedge gettype
1个回答
0
投票

查看 JsonArray 或 JsonObject 上的

GetType()
方法。对于数组,调用
GetType(<idx>)
;对于对象,调用
GetType(<name>)

© www.soinside.com 2019 - 2024. All rights reserved.