2017-07-23 44 views
2

我最近开始使用vb.net的一个项目,我正在努力弄清楚如何获取Mid类中的几个项目的数据o,h,l, c转换为double并加载到数组中,最终对它们执行一些数学函数。以下是我希望使用的JSON数据的一小部分(1000个中的3个)样本。在VB.NET中反序列化嵌套的JSON进行转换

{ 
    "instrument": "EUR_USD", 
    "granularity": "M1", 
    "candles": [ 
     { 
      "complete": true, 
      "volume": 18, 
      "time": "2017-07-21T04:13:00.000000000Z", 
      "mid": { 
       "o": "1.16281", 
       "h": "1.16284", 
       "l": "1.16274", 
       "c": "1.16281" 
      } 
     }, 
     { 
      "complete": true, 
      "volume": 96, 
      "time": "2017-07-21T20:58:00.000000000Z", 
      "mid": { 
       "o": "1.16640", 
       "h": "1.16642", 
       "l": "1.16628", 
       "c": "1.16628" 
      } 
     }, 
     { 
      "complete": true, 
      "volume": 32, 
      "time": "2017-07-21T20:59:00.000000000Z", 
      "mid": { 
       "o": "1.16628", 
       "h": "1.16652", 
       "l": "1.16628", 
       "c": "1.16641" 
      } 
     } 
    ] 
} 

下面是相关代码:

Imports Newtonsoft.Json 

Public Class Rootobject 
    Public Property instrument As String 
    Public Property granularity As String 
    Public Property candles() As List(Of Candle) 
End Class 

Public Class Candle 
    Public Property complete As Boolean 
    Public Property volume As Integer 
    Public Property time As String 
    Public Property mid As Mid 
End Class 

Public Class Mid 
    Public Property o As String 
    Public Property h As String 
    Public Property l As String 
    Public Property c As String 
End Class  

... 'jsonstring loaded with data here 

Dim obj = JsonConvert.DeserializeObject(Of Rootobject)(jsonstring) 

我试图做类似下面的东西用一个循环只接收错误。

Dim obj2 = obj.candles(0).mid.o 

我也试图找到使用JObject.Parse(jsonstring)没有任何成功的方法。那么,具体来说,将Mid类中的值加载到数组中以便进一步处理的最佳方法是什么?

在此先感谢。

回答

1

如果要将所有Mid对象放入数组中,可以使用Linq从集合中进行投影。

Dim mids As Mid() = obj.candles.Select(Function(candle) candle.mid).ToArray() 

如果你想有一个具体的中期性质的集合只需选择您想要

Dim os As Double() = obj.candles.Select(Function(candle) Double.Parse(candle.mid.o)).ToArray() 

一个或前

Dim os As Double() = mids.Select(Function(mid) Double.Parse(mid.o)).ToArray() 

mids阵列项目抓住它同样可以用mid

完成任何其他属性