質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

1681閲覧

VB.NET JSONファイルのシリアライズについて

n_ohno

総合スコア1

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2021/11/18 02:38

前提・実現したいこと

VB.NET JSONファイルのシリアライズ(List内にListを追加)

(完成形) { "Carlist": { "maker": "TOYOTA", "shasyu": [ { "shasyunm": "Prius", "katasiki": [ { "katamei": "6AA-ZVW51" }, { "katamei": "DAA-ZVW55" } ] }, { "shasyunm": "Yaris", "katasiki": [] } ] } }

こに質問の内容を詳しく書いてください。

発生している問題・エラーメッセージ

LIST(shasyu)内にLIST(katasiki)の追加方法がわかりません
どなたかアドバイス頂けないでしょうか?

該当のソースコード

VB.NET

Dim JsonInfo As New JsonInfo Dim carlist As New carlist JsonInfo.Carlist = carlist carlist.Maker = "TOYOTA" carlist.shasyu = New List(Of shasyu) carlist.shasyu.Add(New shasyu With { .shasyunm = "Prius" }) carlist.shasyu.Add(New shasyu With { .shasyunm = "Yaris" }) Public Class JsonInfo Public Property Carlist As carlist End Class <JsonObject("carlist")> Public Class carlist Public Property maker As String Public Property shasyu As List(Of shasyu) End Class <JsonObject("shasyu")> Public Class shasyu Public Property shasyunm As String Public Property katasiki As List(Of katasiki) End Class <JsonObject("katasiki")> Public Class katasiki Public Property katamei As String End Class

試したこと

carlist.shasyu.Add(New shasyu With {
.shasyunm = "Prius",

※ここにどのように書くのかわからない。
.katamei =
})

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下のようにすればいいのでは?

Dim jsonInfo = New JsonInfo With { .Carlist = New Carlist With { .maker = "TOYOTA", .shasyu = New List(Of Shasyu) From { New Shasyu With { .shasyunm = "Prius", .katasiki = New List(Of Katasiki) From { New Katasiki With { .katamei = "6AA-ZVW51" }, New Katasiki With { .katamei = "DAA-ZVW55" } } }, New Shasyu With { .shasyunm = "Yaris", .katasiki = New List(Of Katasiki)() } } } }

【追伸】

上のコードは C# で検証したコードを以下の変換サービスで VB.NET のコードに変換したもので、VB.NET のプロジェクトでは検証してませんので、もし間違いがあったらスミマセン。

Telerik Code COnverter
https://converter.telerik.com/

参考までに、C# のコードを以下に記載しておきます。

using System; using System.Collections.Generic; using Newtonsoft.Json; namespace ConsoleAppJson2 { class Program { static void Main(string[] args) { var jsonInfo = new JsonInfo { Carlist = new Carlist { maker = "TOYOTA", shasyu = new List<Shasyu> { new Shasyu { shasyunm = "Prius", katasiki = new List<Katasiki> { new Katasiki { katamei = "6AA-ZVW51"}, new Katasiki { katamei = "DAA-ZVW55"} } }, new Shasyu { shasyunm = "Yaris", katasiki = new List<Katasiki>() } } } }; var jsonString = JsonConvert.SerializeObject(jsonInfo, Formatting.Indented); Console.WriteLine(jsonString); } } public class JsonInfo { public Carlist Carlist { get; set; } } public class Carlist { public string maker { get; set; } public List<Shasyu> shasyu { get; set; } } public class Shasyu { public string shasyunm { get; set; } public List<Katasiki> katasiki { get; set; } } public class Katasiki { public string katamei { get; set; } } }

結果は:

イメージ説明

投稿2021/11/18 03:20

編集2021/11/18 03:47
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

n_ohno

2021/11/18 04:17

SurferOnWwwさん、早々の回答有難うございました。 動作を確認すると完璧です、 とても参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問