【解決方法】Json serialez オブジェクト エジプト税

プログラミングQA


この結果を取得するには、serialez json オブジェクトを試してください:

"HEADER""DATETIMEISSUED""2022-12-25T00:34:00Z""RECEIPTNUMBER""INV-2012""UUID""""PREVIOUSUUID""""REFERENCEOLDUUID""""CURRENCY""EGP""EXCHANGERATE""0""SORDERNAMECODE""SORDERNAMECODE""ORDERDELIVERYMODE""FC""DOCUMENTTYPE""RECEIPTTYPE""SC""TYPEVERSION""1.2""SELLER""RIN""619013583""COMPANYTRADENAME""شركة الصوفى""BRANCHCODE""0""BRANCHADDRESS""COUNTRY""EG""GOVERNATE""CAIRO""REGIONCITY""CITY CENTER""STREET""16 STREET""BUILDINGNUMBER""14BN""POSTALCODE""74235""FLOOR""1F""ROOM""3R""LANDMARK""TAHRIR SQUARE""ADDITIONALINFORMATION""TALAAT HARB STREET""DEVICESERIALNUMBER""SOFT2010""ACTIVITYCODE""5610""BUYER""TYPE""F""ID""313717919""NAME""TAXPAYER 1""MOBILENUMBER""+201020567462""PAYMENTNUMBER""987654""ITEMDATA""ITEMDATA""INTERNALCODE""880609""DESCRIPTION""SAMSUNG A02 32GB_LTE_BLACK_DS_SM-A022FZKDMEB_A022 _ A022_SM-A022FZKDMEB""ITEMTYPE""GS1""ITEMCODE""EG-619013583-102""UNITTYPE""EA""QUANTITY""35""UNITPRICE""247.96000""NETSALE""7810.74000""TOTALSALE""8678.60000""TOTAL""8887.04360""COMMERCIALDISCOUNTDATA""COMMERCIALDISCOUNTDATA""AMOUNT""867.86000""DESCRIPTION""XYZ""ITEMDISCOUNTDATA""ITEMDISCOUNTDATA""AMOUNT""10""DESCRIPTION""ABC""ITEMDISCOUNTDATA""AMOUNT""10""DESCRIPTION""XYZ""VALUEDIFFERENCE""20""TAXABLEITEMS""TAXABLEITEMS""TAXTYPE""T1""AMOUNT""1096.30360""SUBTYPE""V009""RATE""14""TOTALSALES""8678.60000""TOTALCOMMERCIALDISCOUNT""867.86000""TOTALITEMSDISCOUNT""20""EXTRARECEIPTDISCOUNTDATA""EXTRARECEIPTDISCOUNTDATA""AMOUNT""0""DESCRIPTION""ABC""NETAMOUNT""7810.74000""FEESAMOUNT""0""TOTALAMOUNT""8887.04360""TAXTOTALS""TAXTOTALS""TAXTYPE""T1""AMOUNT""1096.30360""PAYMENTMETHOD""C""ADJUSTMENT""0" 

私が試したこと:

If jObj.Type = JTokenType.String Then
            Return "" & jObj.Value(Of String)() & ""
        End If

        Dim serializedString As StringBuilder = New StringBuilder()

        For Each item In jObj.Children().ToList
            If item.Type <> JTokenType.Array Then
                Dim jObjItem = item.ToObject(Of JObject)()
                For Each itemKeyPair In jObjItem
                    serializedString.Append(Chr(34) & itemKeyPair.Key.ToUpper() & Chr(34))
                    'serializedString.Append(itemKeyPair.Value.ToString)
                    serializedString.Append(Serialize(item))
                    ' serializedString.Append(Chr(34) & itemKeyPair.Value.ToString & Chr(34))

                Next
            End If

            '            JsonObject2 := JSONObject.SelectToken('item.CityAliases');

            'FOREACH Element IN JSONObject2 DO
            '  BEGIN
            '            Value := JSONObject2.SelectToken('Item.CityAliasName');
            '    If CONFIRM('AliasName = ' + FORMAT(Value)) THEN;  <<--Returns NULL
            '  END;






            If item.Type = JTokenType.Array Then
                Dim jArrItem = item.ToObject(Of JArray)()
                serializedString.Append("" & jArrItem.ToString & "")

                For Each jobjsItems In jArrItem.Children()
                    Dim jObjItem = jobjsItems.ToObject(Of JObject)()

                    For Each itemKeyPair In jObjItem
                        serializedString.Append("" & itemKeyPair.Key.ToUpper() & "")
                        serializedString.Append(Serialize(item))
                    Next
                Next
            End If
        Next

        Return serializedString.ToString()

解決策 1

これは JSON ではありません。連結された二重引用符のペアで区切られた一連の文字列です。
JSON データは階層的で、次のサンプル配列のようになります。

JSON
[
	{
		color: "red",
		value: "#f00"
	},
	{
		color: "green",
		value: "#0f0"
	},
	{
		color: "blue",
		value: "#00f"
	},
	{
		color: "cyan",
		value: "#0ff"
	},
	{
		color: "magenta",
		value: "#f0f"
	},
	{
		color: "yellow",
		value: "#ff0"
	},
	{
		color: "black",
		value: "#000"
	}
]

私はあなたが生成することが期待されているものを正確にチェックすることから始めます。JSON の場合は、Newtonsoft.Json のようなものを使用して生成します。

解決策 2

Pseudo Code Implementation
Implementation for JSON:

function string Serialize(documentStructure)
    
    if documentStructure is simple value type
        return """ + documentStructure.value + """
    end if

    var serializedString = ""
    
    foreach element in the structure:
        
        if element is not array type
            serializeString.Append (""" + element.name.uppercase + """)
            serializeString.Append ( Serialize(element.value) )
        end if

        if element is of array type
            serializeString.Append (""" + element.name.uppercase + """)
            foreach array element in element: 
                // use below line for JSON because subelements of array in JSON do not have own names
                serializeString.Append (""" + element.name.uppercase + """)         
                serializeString.Append ( Serialize(arrayelement.value) )              
            end foreach
        end if

    end foreach

    return serializedString
end function

解決策 3

OriginalGriff が指摘しているように、これは JSON データではありません。 ここで有効な JSON データがあるかどうかを確認できます。 JSON オンラインバリデーターおよびフォーマッター – JSON Lint[^]

私はこのテーマに関する包括的な記事シリーズも書いています。その最初の記事は次のとおりです。 C# と VB で Newtonsoft.Json を操作する[^]. 彼らはあなたのすべての質問に答えるはずです。

コメント

タイトルとURLをコピーしました