Array Hilfe

  • VB.NET

Es gibt 29 Antworten in diesem Thema. Der letzte Beitrag () ist von VBNEWBIE1987.

    was mir noch nicht ganz klar ist die klasse die ich zurück bekomme, hat ja denn selben namen wie die,Funktions klasse

    ich bekomme hier immer einen Fehler


    VB.NET-Quellcode

    1. <DataContract> Public Class JSONInfo
    2. Private Shared Function ParseInfoFromString(Str$) As JSONInfo


    Higlav schrieb:


    Spoiler anzeigen
    Hallo VBNEWBIE1987,

    Wie oben schon beschrieben, handelt es sich hier um einen JSON-String. Dieser wird benutzt, um Daten komprimiert zu übertragen/speichern. Das Ganze kommt aus dem Java-Bereich. Nutze folgenden Code, um die Daten zu bekommen:

    Setze einen Verweis auf "System.Runtime.Serialization" und importiere folgende beiden Namespaces:
    System.Runtime.Serialization.Json
    System.Runtime.Serialization

    Füge nun folgende Funktion in die Klasse:

    VB.NET-Quellcode

    1. Private Shared Function ParseInfoFromString(Str$) As JSONInfo
    2. Using MS As New MemoryStream(Encoding.UTF8.GetBytes(Str))
    3. Dim Serializer As New DataContractJsonSerializer(GetType(JSONInfo))
    4. ParseInfoFromString = CType(Serializer.ReadObject(MS), JSONInfo)
    5. MS.Close()
    6. End Using
    7. End Function


    Das ist die Klasse, die du zurückbekommst:

    VB.NET-Quellcode

    1. Public Class JSONInfo
    2. Property id%
    3. Property name$
    4. Property profileIconId%
    5. End Class


    Aufrufen kannst du das Ganze dann in etwa so:

    VB.NET-Quellcode

    1. Dim JSONString = "{""id"":1,""name"":""hallo"",""profileIconId"":2}"
    2. Dim Info = ParseInfoFromString(JSONString)
    3. Dim ID = Info.id
    4. Dim Name = Info.name
    5. Dim ProfileIsonID = Info.profileIconId


    PS: Ungetestet, müsste aber hinhauen...
    PPS: Nachträglich Willkommen im Forum! :thumbsup:

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VBNEWBIE1987“ ()

    Hallo nochmals

    Versuch's mal mit dieser Klasse(Bezogen auf den neueren Thread):

    VB.NET-Quellcode

    1. <DataContract(Name:="Main")>Public Class Main
    2. <DataMember(Name:="id")>Public Property id As Integer
    3. <DataMember(Name:="name")>Public Property name As String
    4. <DataMember(Name:="active")>Public Property active As Boolean
    5. <DataMember(Name:="Rank_id")>Public Property Rank_id As Integer
    6. End Class
    7. <DataContract(Name:="JSONInfo")>Public Class JSONInfo
    8. <DataMember(Name:="main")>Public Property main As List(Of Main)
    9. Private Shared Function ParseInfoFromString(Str$) As JSONInfo
    10. Using MS As New MemoryStream(Encoding.UTF8.GetBytes(Str))
    11. Dim Serializer As New DataContractJsonSerializer(GetType(JSONInfo))
    12. ParseInfoFromString = CType(Serializer.ReadObject(MS), JSONInfo)
    13. MS.Close()
    14. End Using
    15. End Function
    16. End Class

    Dann müsste der Aufruf so klappen:

    VB.NET-Quellcode

    1. Dim JsonString = "{""main"":[{""id"":1,""name"":""name1"",""active"":true,""Rank_id"":35}," & _
    2. "{""id"":2,""name"":""name2"",""active"":true,""Rank_id"":54}," & _
    3. "{""id"":3,""name"":""name3"",""active"":true,""Rank_id"":75}]}"
    4. Dim Info = JsonInfo.ParseInfoFromString(JsonString)
    5. Console.WriteLine(Info.main.First(Function(x) x.id = 2).Rank_id) 'Gibt dann "54" aus.
    Cool vielen dank funktioniert sehr gut

    mal angenommen die (ids) sind immer unterschiedlich, (ändern sich auch im laufe der zeit)
    und ich nur den Namen haben möchte, ohne das ich weiß welche id es ist,
    es sind immer 10 Einträge in dem Json String.


    so wie hier, da greif ich ja aufs Item zu, (0 oder 1)

    VB.NET-Quellcode

    1. var_1_name = JsonConvert.DeserializeObject(Of Linq.JObject)(str_request).Item("main").Item(0).Item("name").ToString()
    2. var_2_name = JsonConvert.DeserializeObject(Of Linq.JObject)(str_request).Item("main").Item(1).Item("name").ToString()


    dachte an so etwas, nur weis ich nicht wie ich es umsetzen kann

    VB.NET-Quellcode

    1. var_1_name = (Info.main.Item(0).Item("name").ToString())


    danke ich habs

    VB.NET-Quellcode

    1. var_1_name = (Info.main.Item(2).name)

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VBNEWBIE1987“ ()

    Hallo VBNEWBIE1987,

    Nach deiner PM habe ich mir die Struktur angesehen und empfehle dir, den gesamten JSON-Sting in diese Klasse zu deserialisieren. Die Klasse sähe dann in etwa so aus:

    Klassenstruktur

    VB.NET-Quellcode

    1. <DataContract> Public Class RecentGamesDto
    2. ''' <summary>
    3. ''' List of recent games played (max 10).
    4. ''' </summary>
    5. ''' <value></value>
    6. ''' <returns></returns>
    7. ''' <remarks></remarks>
    8. <DataMember> Public Property games As List(Of GameDto)
    9. ''' <summary>
    10. ''' Summoner ID.
    11. ''' </summary>
    12. ''' <value></value>
    13. ''' <returns></returns>
    14. ''' <remarks></remarks>
    15. <DataMember> Public Property summonerId&
    16. ''' <summary>
    17. ''' Deserialisiert den JSON-String zu einem <see cref="RecentGamesDto">RecentGamesDto-Objekt</see>.
    18. ''' </summary>
    19. ''' <param name="Str">JSON-String</param>
    20. ''' <returns></returns>
    21. ''' <remarks></remarks>
    22. Private Shared Function ParseInfoFromString(Str$) As RecentGamesDto
    23. Using MS As New MemoryStream(Encoding.UTF8.GetBytes(Str))
    24. Dim Serializer As New DataContractJsonSerializer(GetType(RecentGamesDto))
    25. ParseInfoFromString = CType(Serializer.ReadObject(MS), RecentGamesDto)
    26. MS.Close()
    27. End Using
    28. End Function
    29. End Class
    30. <DataContract> Public Class GameDto
    31. ''' <summary>
    32. ''' Champion ID associated with game.
    33. ''' </summary>
    34. ''' <value></value>
    35. ''' <returns></returns>
    36. ''' <remarks></remarks>
    37. <DataMember> Public Property championid%
    38. ''' <summary>
    39. ''' Date that end game data was recorded. specified as epoch milliseconds.
    40. ''' </summary>
    41. ''' <value></value>
    42. ''' <returns></returns>
    43. ''' <remarks></remarks>
    44. <DataMember> Public Property createDate&
    45. ''' <summary>
    46. ''' Other players associated with the game.
    47. ''' </summary>
    48. ''' <value></value>
    49. ''' <returns></returns>
    50. ''' <remarks></remarks>
    51. <DataMember> Public Property fellowPlayers As List(Of PlayerDto)
    52. ''' <summary>
    53. ''' Game ID.
    54. ''' </summary>
    55. ''' <value></value>
    56. ''' <returns></returns>
    57. ''' <remarks></remarks>
    58. <DataMember> Public Property gameId&
    59. ''' <summary>
    60. ''' Game mode.
    61. ''' </summary>
    62. ''' <value></value>
    63. ''' <returns></returns>
    64. ''' <remarks></remarks>
    65. <DataMember> Public Property gameMode$
    66. ''' <summary>
    67. ''' Game type.
    68. ''' </summary>
    69. ''' <value></value>
    70. ''' <returns></returns>
    71. ''' <remarks></remarks>
    72. <DataMember> Public Property gameType$
    73. ''' <summary>
    74. ''' Invalid flag.
    75. ''' </summary>
    76. ''' <value></value>
    77. ''' <returns></returns>
    78. ''' <remarks></remarks>
    79. <DataMember> Public Property invalid As Boolean
    80. ''' <summary>
    81. ''' Level.
    82. ''' </summary>
    83. ''' <value></value>
    84. ''' <returns></returns>
    85. ''' <remarks></remarks>
    86. <DataMember> Public Property level%
    87. ''' <summary>
    88. ''' Map ID.
    89. ''' </summary>
    90. ''' <value></value>
    91. ''' <returns></returns>
    92. ''' <remarks></remarks>
    93. <DataMember> Public Property mapId%
    94. ''' <summary>
    95. ''' ID of first summoner spell.
    96. ''' </summary>
    97. ''' <value></value>
    98. ''' <returns></returns>
    99. ''' <remarks></remarks>
    100. <DataMember> Public Property spell1%
    101. ''' <summary>
    102. ''' ID of second summoner spell.
    103. ''' </summary>
    104. ''' <value></value>
    105. ''' <returns></returns>
    106. ''' <remarks></remarks>
    107. <DataMember> Public Property spell2%
    108. ''' <summary>
    109. ''' Statistics associated with the game for this summoner.
    110. ''' </summary>
    111. ''' <value></value>
    112. ''' <returns></returns>
    113. ''' <remarks></remarks>
    114. <DataMember> Public Property statistics As List(Of RawStatDto)
    115. ''' <summary>
    116. ''' Game sub-type.
    117. ''' </summary>
    118. ''' <value></value>
    119. ''' <returns></returns>
    120. ''' <remarks></remarks>
    121. <DataMember> Public Property subType$
    122. ''' <summary>
    123. ''' Team ID associated with this game.
    124. ''' </summary>
    125. ''' <value></value>
    126. ''' <returns></returns>
    127. ''' <remarks></remarks>
    128. <DataMember> Public Property teamId%
    129. End Class
    130. <DataContract> Public Class PlayerDto
    131. ''' <summary>
    132. ''' Champion id associated with player.
    133. ''' </summary>
    134. ''' <value></value>
    135. ''' <returns></returns>
    136. ''' <remarks></remarks>
    137. <DataMember> Public Property championId%
    138. ''' <summary>
    139. ''' Summoner id associated with player.
    140. ''' </summary>
    141. ''' <value></value>
    142. ''' <returns></returns>
    143. ''' <remarks></remarks>
    144. <DataMember> Public Property summonerId&
    145. ''' <summary>
    146. ''' Team id associated with player.
    147. ''' </summary>
    148. ''' <value></value>
    149. ''' <returns></returns>
    150. ''' <remarks></remarks>
    151. <DataMember> Public Property teamId%
    152. End Class
    153. <DataContract> Public Class RawStatDto
    154. ''' <summary>
    155. ''' Raw stat ID.
    156. ''' </summary>
    157. ''' <value></value>
    158. ''' <returns></returns>
    159. ''' <remarks></remarks>
    160. <DataMember> Public Property id%
    161. ''' <summary>
    162. ''' Raw stat name.
    163. ''' </summary>
    164. ''' <value></value>
    165. ''' <returns></returns>
    166. ''' <remarks></remarks>
    167. <DataMember> Public Property name$
    168. ''' <summary>
    169. ''' Raw stat value.
    170. ''' </summary>
    171. ''' <value></value>
    172. ''' <returns></returns>
    173. ''' <remarks></remarks>
    174. <DataMember> Public Property value%
    175. End Class
    noch eine frage

    ........Dto

    Name Data Type Description

    progress Array[char]


    Wie kann ich das den umsetzen Array[char]

    VB.NET-Quellcode

    1. <DataMember()> Public Property progress As Array char



    char
    Name Data Type Description

    keine werte

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VBNEWBIE1987“ ()