Как динамически установить свойство JsonObject?

Я использую метод передачи Json в и из моей разметки, используя jquery и ajax. Это может быть описано более подробно на этой странице: 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"
       }

Кто-нибудь из вас, ребята, знает, как это сделать?

1 ответ

Решение

Вам действительно нужны идентификаторы заказа, чтобы быть свойствами объекта? Может быть проще просто вернуть сериализованный словарь (Of String, String). Вы все еще можете искать по идентификатору заказа, и было бы проще зацикливаться, чем реквизиты объекта Javascript.

Вот пример того, что вам нужно сделать, используя словарный подход:

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
Другие вопросы по тегам