根据字符串参数选择Json属性

时间:2015-01-17 15:36:13

标签: vb.net json.net

我正在使用Json.net,以下是我的JsonResponse类

Imports Newtonsoft.Json
Imports AustinHarris.JsonRpc

Public Class JsonResponse
    Inherits AustinHarris.JsonRpc.JsonResponse
    <JsonProperty(PropertyName:="token")> Public Property token As String
    <JsonProperty(PropertyName:="product")> Public Property product As String
    <JsonProperty(PropertyName:="status")> Public Property status As String
End Class

正如您所看到的,我的Json对象有一些额外的自定义属性。我使用下面的代码来创建我的Json对象。

jsonrpc_response = JsonConvert.DeserializeObject(Of JsonResponse)(json_string)

最后,我有一个JSONObject,其中包含令牌,产品和状态作为其属性。现在我想要做的是使用字符串作为参数来访问这些属性,例如

MsgBox ("This is my token: " & jsonrpc_response("token"))
MsgBox ("This is my product: " & jsonrpc_response("product"))

但是这不起作用,因为无法以这种方式访问​​这些属性。如何根据字符串作为属性名参数访问属性?

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,以下功能添加到JsonResponse Class完美无缺!

Public Function GetPropValue(src As Object, propName As String) As Object
        Return src.[GetType]().GetProperty(propName).GetValue(src, Nothing)
End Function

因此,

MsgBox("This is my token: " & jsonrpc_response.GetPropValue(jsonrpc_response, "token"))