[ad_1]
やあ
「WayBill」の特定の値を抽出するのに問題があります
「無効なキー値を持つ JArray 値にアクセスしました: “WayBill”.Int32 配列インデックスが必要です」というエラーが表示されました。
Plsは私にアドバイスします
ありがとうございました
私が試したこと:
JavaScript
Json is { "Status": true, "Message": "Shipment Creation Successful", "ResponseData": [{ "PickupBranchCode": "DKPG", "DeliveryRouteCode": "HAKHG2M3", "WayBill": ["ZND167281208805"], "DeliveryHubCode": "HAKH", "DeliveryBranchCode": "HAKH", "PickupRouteCode": "DUSJW2WE", "PickupHubCode": "HSHM" }], "Reason": null } Dim json = Me.txtJson.Text Dim obj As Object = JsonConvert.DeserializeObject(json) Me.txtResult.Text = obj("ResponseData")("WayBill").ToString
解決策 1
のみを取り除きたい場合は、 WayBill
数字、次に使用できます: SelectToken を使用した JSON のクエリ – NewtownSoft[^]
C#
using Newtonsoft.Json.Linq; string rawJson = $$""" { "Status": true, "Message": "Shipment Creation Successful", "ResponseData": [{ "PickupBranchCode": "DKPG", "DeliveryRouteCode": "HAKHG2M3", "WayBill": ["ZND167281208805"], "DeliveryHubCode": "HAKH", "DeliveryBranchCode": "HAKH", "PickupRouteCode": "DUSJW2WE", "PickupHubCode": "HSHM" }], "Reason": null } """; JObject jObj = JObject.Parse(rawJson); IEnumerable<string> billNumbers = jObj .SelectToken("$.ResponseData[0]['WayBill']") .Values<string>(); string wayBillNumber = string.Join(", ", billNumbers); Console.WriteLine($"WaBill #: {wayBillNumber}");
しかし、Json 全体を逆シリアル化したい場合は、次の記事をご覧ください。 C# と VB で Newtonsoft.Json を操作する[^]
[ad_2]
コメント