简体   繁体   English

如何在 VB.net 中获取 JSON 数组或对象的值?

[英]How to get value of JSON array or object in VB.net?

I have JSON file having following data.我有包含以下数据的 JSON 文件。 I just want to get the data of "naming" and "unit".我只想获取“命名”和“单位”的数据。 Please assist me how to do this in VB.net?请帮助我如何在 VB.net 中做到这一点?

[
        {
            "customerId": "999",
            "deviceId": "XXX999",
            "searchDeviceId": "D_XXX999",
            "utc": "2016-04-28T03:37:00.000Z",
            "lat": 22.5691,
            "lng": 120.3058,
            "sensors": [
                {
                    "naming": "ABC123",
                    "factor": null,
                    "unit": "k",
                    "period": null
                },
                {
                    "naming": "XYZ123",
                    "factor": null,
                    "unit": "c",
                    "period": null
                },
                .
                .
                .
                .
                .
            ]
        }
    ]

For C# : 对于C#:

JObject jResults = JObject.Parse("JsonString");
String naming = jResults["sensors"]["naming "];
String unit = jResults["sensors"]["unit "];

For VB: 对于VB:

Dim jResults As JObject = JObject.Parse("JsonString")
Dim naming As [String] = jResults("sensors")("naming ")
Dim unit As [String] = jResults("sensors")("unit ")

You can achieve like this. 你可以这样做。

Just in case people are looking to loop through multiple JSON Array or Object in vb.net using Newtonsoft.Json.Linq 以防万一人们想要使用Newtonsoft.Json.Linq在vb.net中循环遍历多个JSON数组或对象

 request = url
 request.Headers.Add("Authorization", "Bearer " + accessToken)

            'Get response
            response = DirectCast(request.GetResponse(), HttpWebResponse)

            ' Get the response stream into a reader  
            reader = New StreamReader(response.GetResponseStream())
            Dim JSONresponseFromServer As String = reader.ReadToEnd()

            ' Parse the content into a json object
            Dim json As String = JSONresponseFromServer
            Dim ser As JObject = JObject.Parse(json)
            Dim data As List(Of JToken) = ser.Children().ToList

            For Each item As JProperty In data
                item.CreateReader()
                Select Case item.Name
             Case "sensors" 'each record is inside the entries array
                     For Each Entry As JObject In item.Values
                       Dim naming As String = Entry("naming ").ToList.Item(0)
                       Dim factor As String = Entry("factor").ToList.Item(0)
' you can continue listing the array items untill you reach the end of you array

             Next
        End Select
 Next 

If the Json object item is not in an array and you just want the items it returns 如果Json对象项不在数组中,并且您只想要它返回的项

   For Each item As JProperty In data
       item.CreateReader()
             Dim customerId As String = ser("customerId")
             Dim deviceIdAs String = ser("deviceId")
   next

I was getting an error using the 'Chetan Sanghani' answer with the brackets around string ex [String] 我使用'Chetan Sanghani'答案时出现错误,并使用字符串ex [String]的括号

Use Jarray its better使用 Jarray 更好

see this example and try to make it on your json data its clear .看到这个例子,并尝试在你的 json 数据上使其清晰。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM