【问题标题】:How does one set a property of a JsonObject dynamically?如何动态设置 JsonObject 的属性?
【发布时间】:2014-02-24 21:30:11
【问题描述】:

我正在使用 jquery 和 ajax 将 Json 传入和传出我的标记的方法。这可以在此页面上更详细地描述:http://blogs.telerik.com/aspnet-ajax/posts/12-04-27/the-present-and-future-of-using-json-in-webforms.aspx

在这段代码的 sn-p 中,我尝试通过将名为“test”的字符串变量设置为业务对象的值来动态设置对象的值:

       Dim objOrder As Object = New JsonObject()
       For Each Order As BoVendorOrder In Orders
            Dim Vendor As New BoVendor(Order.VendorID)
            Dim test As String = Order.VendorOrderID
            objOrder.test = Vendor.VendorName + " - " + Order.VendorOrderPoNumber
       Next

为了简洁起见,我省略了一些代码。目标是让 objOrder.test 等于 VendorOrderID(我们的 SQL 数据库中的一个数字),以便 JSON 看起来像这样:

       {
            "123456": "VendorName - PONumber",
            "678901": "VendorName - PONumber"
       }

你们中有人知道怎么做吗?

【问题讨论】:

    标签: asp.net json vb.net system.json


    【解决方案1】:

    您真的需要订单 ID 作为对象的属性吗?只返回一个序列化的 Dictionary(Of String, String) 可能更容易。您仍然可以通过订单 ID 查找,并且比 Javascript 对象的 props 更容易循环。

    以下是使用字典方法需要执行的示例:

    Dim OrdersDict as New Dictionary(Of String, String)()  
    For Each Order as BoVendorOrder In Orders  
        If Not OrdersDict.ContainsKey(Order.VendorOrderID) Then  
            OrdersDict.Add(Order.VendorOrderID, Vendor.VendorName + " - " + Order.VendorOrderPoNumber)
        End If
    Next
    
    ' Serialize the dictionary object to JSON
    
    ' Using System.Web.Script.Serialization.JavascriptSerializer:
    Dim Serializer As New JavaScriptSerializer
    If MaxLength Then Serializer.MaxJsonLength = Int32.MaxValue
    Dim x as String = Serializer.Serialize(OrdersDict) 'Return or response.write x as needed
    
    'or
    
    'Using JSON.net
    Dim x as String = JsonConvert.SerializeObject(OrdersDict) 'Return or response.write x as needed
    

    【讨论】:

    • 不,我不需要 orderIDs 作为对象的属性。我有一个当前正在运行的解决方法。我基本上是在构建一个字符串并以这种方式将 orderID 添加为属性。代码有点乏味/丑陋,我想知道这是否可能。至于您的建议,我以前从未使用过 Dictionary(Of String, String) 。我正在准备使用 jquery 在我的标记中循环遍历 json,因此我不需要使用 vb 查找 orderID。生病谷歌字典(字符串,字符串),看看它是什么样子。谢谢=)
    • 嘿,非常感谢这个例子!我很好地遵循它,直到 MaxLength 部分。在我的项目中遵循您的示例时,它没有为我定义。我已经导入了System.Web.Script.Serialization。此外,这比我作为解决方法所做的要干净得多。
    • 对不起,我从我的一些代码中复制了这个。我们传入一个布尔值 MaxLength,如果设置为 True,则设置生成的 json 字符串的最大长度,因此我们不会写太多。我认为我们添加了这一点,因为我们遇到了非常长的数组,其中充满了具有许多属性的对象。在这种情况下,您可能可以忽略它。
    • 这很好用,并且提供比手动构建字符串更简洁的代码。我仍然想知道是否可以创建 JSonObject 的属性,但我将其标记为答案,因为它解决了我的问题。谢谢布伦特!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    • 2015-10-19
    • 2016-03-13
    • 2011-09-18
    • 1970-01-01
    相关资源
    最近更新 更多