2014-02-24 8 views
1

jquery와 ajax를 사용하여 내 마크 업과의 사이에서 Json을 전달하는 방법을 사용하고 있습니다. 이이 페이지에 자세히 설명 할 수 있습니다JsonObject의 속성을 어떻게 동적으로 설정합니까?

 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 
:이 코드 조각에서 http://blogs.telerik.com/aspnet-ajax/posts/12-04-27/the-present-and-future-of-using-json-in-webforms.aspx

, 나는 비즈니스 오브젝트의 값을 "테스트"라는 문자열 변수를 설정하여 동적 객체의 값을 설정하려고

간결함을 위해 몇 가지 코드를 생략했습니다.

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

당신의 상관 거기에이 작업을 수행하는 방법을 알고있는 사람 다음 JSON은 다음과 같습니다 있도록 목표는 objOrder.test가 VendorOrderID (우리의 SQL 데이터베이스의 수)와 동일하게 얻을 수 있습니다?

답변

1

개체의 속성으로 주문 ID가 정말로 필요합니까? 직렬화 된 Dictionary (String, String 중)를 반환하는 것이 더 쉽습니다. 주문 ID로 여전히 조회 할 수 있으며 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 
+0

아니, 나는 개체의 속성과 orderIDs 필요하지 않습니다. 현재 작동하고있는 임시 해결책을 가지고 있습니다. 기본적으로 문자열을 만들고 해당 순서대로 속성을 추가합니다. 코드는 약간 번거롭고 못 생겼습니다. 이것이 가능한지 알고 싶었습니다. 귀하의 제안에 관해서는, 전에 Dictionary (String, String 중) 사전을 사용하지 않았습니다. jsonery를 사용하여 마크 업을 반복 할 json을 준비 중이므로 VB에서 orderID를 조회 할 필요가 없습니다. 나쁜 구글 사전 (문자열 중, 문자열)과 그 모습을 참조하십시오. 감사합니다.) – Primalpat

+0

이봐 요, 정말 고마워요! MaxLength 부분까지 꽤 잘 따라합니다. 내 프로젝트에서 예제를 따르는 동안 나에게 정의되지 않았습니다. 이미'System.Web.Script.Serialization'을 임포트했습니다. 또한, 이것은 내가 해결 방법으로하고 있었던 것보다 훨씬 깨끗합니다. – Primalpat

+0

죄송합니다. 제가 가지고있는 코드 중 일부를 복사했습니다. 부울 MaxLength를 전달하면 True로 설정하면 결과 json 문자열의 최대 길이를 설정하므로 너무 많이 쓰지는 않습니다. 우리가 많은 속성을 가진 객체로 가득 찬 정말 긴 배열을 가지고 문제가 발생했기 때문에 추가했다고 생각합니다. 이 경우 무시할 수 있습니다. –

관련 문제