Как динамически установить свойство 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