2017-06-29 15 views
1

JSONをApplication Insights Analytics(AIA)から自分のクラスに逆シリアル化しようとしています。私は右のそれに近づいてるかどうかわからないんだけど、私は、JSONのデータセクションで取得してから、このコードを使用して、私のクラスにデシリアライズしようとするには、JSON LINQを使用:Application Insights AnalyticsをJson.netとデシリアライズ

Dim rawjson As String = GetTelemetry() 
Dim o As JObject = JObject.Parse(rawjson) 
Dim ds = DirectCast(o("Tables")(0)("Rows"), JArray) 
Dim Sessions As List(Of Session) = JsonConvert.DeserializeObject(Of List(Of Session))(ds) 

この

"Rows": [ 
    [ 
     "Boy", 
     "9", 
     "", 
     "", 
     "0", 
     "0", 
     "22", 
     "0" 
    ], 
    [ 
     "Boy", 
     "9", 
     "", 
     "", 
     "0", 
     "0", 
     "41", 
     "0" 
    ], 

個々の行のデータがオブジェクトではなく配列であることに注意してください。

マイSessionクラスは、次のように定義されています

Public Class Session 
    Public Property Gender As String 
    Public Property Age As Integer 
    Public Property SessionVids As Integer 
    Public Property TotalVids As Integer 
    Public Property ChildUse As Integer 
    Public Property ChildTime As Integer 
    Public Property AdultUse As Integer 
    Public Property AdultTime 
End Class 

誰かがこれを行う方法を説明していただけますか?

+1

あなたにデシリアライズしようとしている 'Session'クラスの定義は何ですか?文字列 公共財産年齢として –

+0

公開クラスセッション 公開プロパティ性別整数として 公開プロパティSessionVids整数として 公開プロパティTotalVids整数として 公開プロパティChildUse整数として 公開プロパティChildTime整数として 公開プロパティAdultUse整数 公開プロパティAdultTimeとして、 終了クラス – Maf

+0

@BrianRogersどのような考えですか? – Maf

答えて

0

あなたはこのようなSessionオブジェクトのリストに行(ds)のJArrayを変換することができます:

Public Function GetInt(jt As JToken) As Integer 
    Dim i As Integer 
    If Integer.TryParse(jt.Value(Of String)(), i) 
     Return i 
    End If 
    Return 0 
End Function 

ヘルパー関数:GetIntは次のように定義されたヘルパー関数です

Dim Sessions As List(Of Session) = 
    ds.Select(Function(ja) 
        Dim s As New Session() 
        s.Gender = ja(0).Value(Of String)() 
        s.Age = GetInt(ja(1)) 
        s.SessionVids = GetInt(ja(2)) 
        s.TotalVids = GetInt(ja(3)) 
        s.ChildUse = GetInt(ja(4)) 
        s.ChildTime = GetInt(ja(5)) 
        s.AdultUse = GetInt(ja(6)) 
        s.AdultTime = GetInt(ja(7)) 
        Return s 
       End Function).ToList() 

あなたのクラスが有効な整数を必要とする間、JSONは値のいくつかのために空の文字列を持っているので、必要です。

フィドル:https://dotnetfiddle.net/GqFcov

関連する問題