2016-11-22 2 views
1

У меня есть объект JSON, который я храню в базе данных, которая создается var data = JSON.stringify ($ ('# frm'). SerializeArray()); Я хочу назвать это и использовать Newtonsoft.json, чтобы разобрать его на части. Мой полностью свернуты VB.Net код (Dont забрать меня, я знаю, что это хак)разобрать строку Json с Newtonsoft

 Dim reader As JsonTextReader = New JsonTextReader(New StringReader(TextBox1.Text)) 
    Dim firstname As String = "" 
    Dim middleInitial As String = "" 
    Dim lastName As String = "" 


    While (reader.Read()) 

     Select Case reader.Value 
      Case "disFirst" 
       reader.Read() 
       reader.Read() 
       firstname = reader.Value 
      Case "disMiddle" 
       reader.Read() 
       reader.Read() 
       middleInitial = reader.Value 
      Case "disLast" 
       reader.Read() 
       reader.Read() 
       lastName = reader.Value 
     End Select 
    End While 

    MessageBox.Show(firstname + " " + middleinitial + " " + lastName) 

, но это работает. Я 100% знаю, что есть МНОГО БОЛЬШИХ способов, поэтому, если кто-то может указать мне в правильном направлении VB.Net, это было бы здорово. My Json string

[{"name":"disFirst","value":"Robert"},{"name":"disMiddle","value":"S"},{"name":"disLast","value":"Smith"},{"name":"disSuffix","value":""},{"name":"disEmail","value":"[email protected], [email protected]"},{"name":"disAffiliations","value":"Arizona\r\nXXXX"},{"name":"disPMIDlist","value":""},{"name":"disThreshholdFactor","value":""}] 
+0

Этот код на самом деле не разбирает его ('JObject.Parse (jstr)'). Кажется, что он должен легко десериализоваться на массив. Кажется, плохая структура, хотя имена arent связаны друг с другом. «Роберт» не связан или связан с «Смитом» – Plutonix

+0

Я подошел ближе. структуру, которую я не могу контролировать, поскольку это стандартный сериализатор jQuery формы. То, что я получил, это – user1314159

+0

Извините, что я не знаю, как добавить код в комментарии добавления – user1314159

ответ

1

Это json больше, чем немного взволнованный. Кажется, что он описывает объект, а не объект с именем, именем и т. Д. Это всего лишь набор пар имен. Пока есть только одна сущность, я думаю, это может сработать.

Это будет десериализации JSON в массив пар имя:

Public Class NameValuePair 
    Public Property name As String 
    Public Property value As String 
End Class 

Тогда для десериализации:

Dim jstr = from whereever 
Dim myNVPs = JsonConvert.DeserializeObject(Of NameValuePair())(jstr) 

name будет содержать те ужасные ключи, как disLast и value будут связанные данные , В качестве массива вы можете прокручивать его, чтобы получить данные.

+0

отлично работает как шарм. уродливые имена, такие как disFirst и disLast, странны, потому что dis идентифицирует форму, в которой они находятся. В приложении есть другие места, которые вызывают имя и фамилию и т. Д. JSON автоматически создается JSON.stringify ($ ('# frm'). SerializeArray()); используя имя входного элемента – user1314159

+0

Чаще всего для тех, кто возвращается, как своего рода унифицированный объект, такой как Person {FIrst, Last, Middle, Gender, BirthDate ... и т. д.}, тогда вам не пришлось бы объединять его вместе и при необходимости может пройти более одного раза. Рад, что это сработало – Plutonix

Смежные вопросы