2015-10-31 2 views
0

У меня возникли проблемы с созданием объекта json с размерным массивом.Как сериализовать массив объектов JSON с двумя или более элементами в vb.net

Смотрите код, я использую, и если вы можете, пожалуйста, помогите мне


Выходная строка JSON объект:

{ 
     "title":"The title", 
     "subtitle":"Some subtitle here", 
     "category_id":"your category", 
     "price":10, 
     "currency_id":"Real", 
     "available_quantity":1, 
     "buying_mode":"buy_it_now", 
     "listing_type_id":"bronze", 
     "condition":"new", 
     "description": "Description", 
     "video_id": "YOUTUBE_ID_HERE", 
     "warranty": "12 months", 
     "pictures":[ 
     {"source":"http://www.yourimage/1.jpg"}, 
     {"source":"http://www.yourimage/2.jpg"}, 
     {"source":"http://www.yourimage/3.jpg"} 
     ] 
    } 

Json Класс :

Порожденного http://jsonutils.com/

Public Class Picture 
    Public Property source As String 
End Class 

Public Class newItem 
    Public Property title As String 
    Public Property subtitle As String 
    Public Property category_id As String 
    Public Property price As Integer 
    Public Property currency_id As String 
    Public Property available_quantity As Integer 
    Public Property buying_mode As String 
    Public Property listing_type_id As String 
    Public Property condition As String 
    Public Property description As String 
    Public Property video_id As String 
    Public Property warranty As String 
    Public Property pictures() As Picture 
End Class 

Использования класса для создания объекта JSon:

Dim itempost As New PostItem() 
       itempost.title = "Não compre isso é apenas um teste" 
       itempost.subtitle = "Sub título" 
       itempost.category_id = "MLB42369" 
       itempost.price = 100 
       itempost.currency_id = "BRL" 
       itempost.available_quantity = 1 
       itempost.buying_mode = "buy_it_now" 
       itempost.listing_type_id = "gold_special" 
       itempost.condition = "new" 
       itempost.description = "Descrição do produto" 
       itempost.video_id = "https://www.youtube.com/watch?v=Gta9HU6M0hk" 
       itempost.warranty = "Jesus Cristo" 

       **'here is where I am in trouble** 
       itempost.pictures = New String() {"http://www.yourimage/1.jpg", ""http://www.yourimage/2.jpg""} 
       MessageBox.Show(JsonConvert.SerializeObject(itempost).ToString) 

Я уже пробовал во многих отношениях, но без успеха , Извините за ошибки языка, я переводчик Google


Edit:

я двигаюсь вперед. Следит код:

Dim itempost As New PostItem() With { 
      .title = "Não compre isso é apenas um teste", 
      .category_id = "MLB42369", 
      .price = 100, 
      .currency_id = "BRL", 
      .available_quantity = 1, 
      .buying_mode = "buy_it_now", 
      .listing_type_id = "gold_special", 
      .condition = "new", 
      .description = "Descrição do produto", 
      .video_id = "https://www.youtube.com/watch?v=Gta9HU6M0hk", 
      .warranty = "Jesus Cristo", 
      .pictures = New Picture() With { 
      .source = "" 
      } 
      } 

MessageBox.Show (JsonConvert.SerializeObject (itempost, Formatting.Indented))

Следит выход:

JSON
{ 
    "title": "Não compre isso é apenas um teste", 
    "category_id": "MLB42369", 
    "price": 100, 
    "currency_id": "BRL", 
    "available_quantity": 1, 
    "buying_mode": "buy_it_now", 
    "listing_type_id": "gold_special", 
    "condition": "new", 
    "description": "Descrição do produto", 
    "video_id": "https://www.youtube.com/watch?v=Gta9HU6M0hk", 
    "warranty": "Jesus Cristo", 
    "pictures": { 
    "source": "" 
    } 
} 

Единственное, что отсутствует меняется синтаксис:

"pictures": { 
     "source": "" 
     } 

для:

"pictures": [ 
     { 
     "source": "" 
    } 
     ] 
+0

Ваш класс имеет 'картинки в картинке()', который является тип массива, каждый со своим собственным 'Source' собственности – Plutonix

+0

... и оно не 2 мерную – Plutonix

+0

Копировать JSON в буфер обмена, в Визуальная Studio do paste special, вставьте json в качестве классов, посмотрите на структуры классов, которые он создает. – Crowcoder

ответ

0

Конгуляции, все rigth.

увидеть, как код стал


Код класса

Public Class Picture 
    Public Property source As String 
End Class 



Public Class PostItem 

    Public Property title As String 
    Public Property category_id As String 
    Public Property price As Integer 
    Public Property currency_id As String 
    Public Property available_quantity As Integer 
    Public Property buying_mode As String 
    Public Property listing_type_id As String 
    Public Property condition As String 
    Public Property description As String 
    Public Property video_id As String 
    Public Property warranty As String 
    Public Property pictures As List(Of Picture) 
End Class 

код сериализации

Dim itempost As New PostItem() With { 
      .title = "Não compre isso é apenas um teste", 
      .category_id = "MLB42369", 
      .price = 100, 
      .currency_id = "BRL", 
      .available_quantity = 1, 
      .buying_mode = "buy_it_now", 
      .listing_type_id = "gold_special", 
      .condition = "new", 
      .description = "Descrição do produto", 
      .video_id = "https://www.youtube.com/watch?v=Gta9HU6M0hk", 
      .warranty = "Jesus Cristo", 
      .pictures = New List(Of Picture) From { 
       New Picture() With { 
        .source = "Foto 1"}, 
       New Picture() With { 
        .source = "Foto 2"} 
      } 
     } 

O utput Json строка

{ 
    "title": "Não compre isso é apenas um teste", 
    "category_id": "MLB42369", 
    "price": 100, 
    "currency_id": "BRL", 
    "available_quantity": 1, 
    "buying_mode": "buy_it_now", 
    "listing_type_id": "gold_special", 
    "condition": "new", 
    "description": "Descrição do produto", 
    "video_id": "https://www.youtube.com/watch?v=Gta9HU6M0hk", 
    "warranty": "Jesus Cristo", 
    "pictures": [ 
    { 
     "source": "Foto 1" 
    }, 
    { 
     "source": "Foto 2" 
    } 
    ] 
} 
Смежные вопросы