1

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

在这段代码中,我尝试通过将名为“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"
       }

有小伙伴知道怎么做吗?

4

1 回答 1

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
于 2014-02-25T03:39:18.670 回答