我寻找解决问题的解决方案,因为2周没有解决方案。 我想用JSON.NET反序列化JSON,但现在......
我创建了类,但是当我反序列化时,对象保持为空(Nothing)。
这里是JSON:
{"plannifReponse":
{"@competence":"Abonnement","plannifDonnees":
{"entry":
[
{"key":"2013-8-11T00:00","value":
{"creneaux":
[
{"@jour":"2013-8-11T00:00","@heure":"09","@minute":"30","nombreRessources":10},
{"@jour":"2013-8-11T00:00","@heure":"10","@minute":"30","nombreRessources":2},
{"@jour":"2013-8-11T00:00","@heure":"17","@minute":"30","nombreRessources":5},
{"@jour":"2013-8-11T00:00","@heure":"20","@minute":"30","nombreRessources":5},
{"@jour":"2013-8-11T00:00","@heure":"21","@minute":"00","nombreRessources":16}
]
}
},
{"key":"2013-7-30T00:00","value":
{"creneaux":
[{"@jour":"2013-7-30T00:00","@heure":"12","@minute":"00","nombreRessources":4},{"@jour":"2013-7-30T00:00","@heure":"12","@minute":"15","nombreRessources":10},{"@jour":"2013-7-30T00:00","@heure":"12","@minute":"30","nombreRessources":3},{"@jour":"2013-7-30T00:00","@heure":"14","@minute":"00","nombreRessources":8},{"@jour":"2013-7-30T00:00","@heure":"18","@minute":"30","nombreRessources":10}]}}]}}}
为此,我翻译了该课程:
Public Class plannifReponse
Public competence As String
Public plannifDonnees As Dictionary(Of String, ListCreneaux)
End Class
Public Class ListCreneaux
Public listCreneaux() As Creneau
End Class
Public Class Creneau
Public jour As String
Public heure As String
Public minute As String
Public nombreRessources As Integer
Public Sub New(ByVal _jour, ByVal _heure, ByVal _minute, ByVal _nombreRessources)
jour = _jour
heure = _heure
minute = _minute
nombreRessources = _nombreRessources
End Sub
End Class
代码:
Dim prev As plannifReponse = JsonConvert.DeserializeObject(Of plannifReponse)(My_dispos)
但它不起作用,没有错误信息,但是保持“没什么”
要获得帮助,这里的源对象用于序列化(它在Java上)
public class OutputPlannif {
private String competence;
private HashMap<String, ListCreneaux> plannifDonnees;
}
public class ListCreneaux {
private ArrayList<Creneau> listCrenaux;
}
public class Creneau {
private String jour;
private String heure;
private String minute;
private int nombreRessources;
}
如果有人有想法...... 谢谢 马特
答案 0 :(得分:4)
您应该创建一系列映射要反序列化的JSON的类。有一些工具(such as this one)可以为您做到这一点。或者您可以手动完成,一次只需一名成员,结果如下所示:
Public Class StackOverflow_17956746
Public Class OutputPlannif
<JsonProperty("plannifReponse")> _
Public PlannifReponse As PlannifReponse
End Class
Public Class PlannifReponse
<JsonProperty("@competence")> _
Public Competence As String
<JsonProperty("plannifDonnees")> _
Public PlannifDonnees As PlannifDonnees
End Class
Public Class PlannifDonnees
<JsonProperty("entry")> _
Public Entries As List(Of Entry)
End Class
Public Class Entry
<JsonProperty("key")> _
Public Key As String
<JsonProperty("value")> _
Public Value As Value
End Class
Public Class Value
<JsonProperty("creneaux")> _
Public ListCreneaux As List(Of Creneau)
End Class
Public Class Creneau
<JsonProperty("@jour")> _
Public Jour As String
<JsonProperty("@heure")> _
Public Heure As String
<JsonProperty("@minute")> _
Public Minute As String
<JsonProperty("nomberRessources")> _
Public NombreRessources As Integer
End Class
Const JSON As String = "{" & vbCrLf & _
" ""plannifReponse"":" & vbCrLf & _
"{""@competence"":""Abonnement"",""plannifDonnees"":" & vbCrLf & _
"{""entry"":" & vbCrLf & _
"[" & vbCrLf & _
"{""key"":""2013-8-11T00:00"",""value"":" & vbCrLf & _
"{""creneaux"":" & vbCrLf & _
"[" & vbCrLf & _
"{""@jour"":""2013-8-11T00:00"",""@heure"":""09"",""@minute"":""30"",""nombreRessources"":10}," & vbCrLf & _
"{""@jour"":""2013-8-11T00:00"",""@heure"":""10"",""@minute"":""30"",""nombreRessources"":2}," & vbCrLf & _
"{""@jour"":""2013-8-11T00:00"",""@heure"":""17"",""@minute"":""30"",""nombreRessources"":5}," & vbCrLf & _
"{""@jour"":""2013-8-11T00:00"",""@heure"":""20"",""@minute"":""30"",""nombreRessources"":5}," & vbCrLf & _
"{""@jour"":""2013-8-11T00:00"",""@heure"":""21"",""@minute"":""00"",""nombreRessources"":16}" & vbCrLf & _
"]" & vbCrLf & _
"}" & vbCrLf & _
"}," & vbCrLf & _
"{""key"":""2013-7-30T00:00"",""value"":" & vbCrLf & _
"{""creneaux"":" & vbCrLf & _
"[{""@jour"":""2013-7-30T00:00"",""@heure"":""12"",""@minute"":""00"",""nombreRessources"":4},{""@jour"":""2013-7-30T00:00"",""@heure"":""12"",""@minute"":""15"",""nombreRessources"":10},{""@jour"":""2013-7-30T00:00"",""@heure"":""12"",""@minute"":""30"",""nombreRessources"":3},{""@jour"":""2013-7-30T00:00"",""@heure"":""14"",""@minute"":""00"",""nombreRessources"":8},{""@jour"":""2013-7-30T00:00"",""@heure"":""18"",""@minute"":""30"",""nombreRessources"":10}]}}]}}}"
Public Shared Sub Test()
Dim output As OutputPlannif
output = JsonConvert.DeserializeObject(Of OutputPlannif)(JSON)
Console.WriteLine(output)
End Sub
End Class