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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JSON

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

Q&A

解決済

1回答

7527閲覧

c#でcsvファイルを読み込み、json形式で出力したい

aruto417

総合スコア1

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JSON

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

1グッド

0クリップ

投稿2020/05/23 05:49

前提・実現したいこと

C#でcsvファイルを読み込みjson形式で出力したいです。
json形式にする上で、csvファイルの1行目をkeyとし、2行目以降をvalueとして出力したいのですがいい方法はないでしょうか。
例)以下のようなcsvファイルを読み込み
aaa,bbb,ccc
1,2,3
50,70,90
以下のような形式で出力したいです。
{"aaa": "1" ,"bbb": "2", "ccc": "3" }
{"aaa": "50" ,"bbb": "70", "ccc": "90" }

該当のソースコード

C#

1using System.Collections.Generic; 2using System.IO; 3using System.Json; 4using Newtonsoft.Json; 5 6namespace CsvRead 7{ 8 class Test 9 { 10 static void Main() 11 { 12 StreamReader sr = new StreamReader(@"test.csv", System.Text.Encoding.GetEncoding("shift_jis")); 13 { 14 while (!sr.EndOfStream) 15 { 16 17 string line = sr.ReadLine(); 18 19 string[] values = line.Split(','); 20 List<string> lists = new List<string>(); 21 lists.AddRange(values); 22 23 string jsonString = JsonConvert.SerializeObject(lists); 24 25 System.Console.WriteLine(jsonString); 26 27 28 } 29 } 30 31 } 32 } 33}

試したこと

csvファイルを読み込み1行目から最後までjson形式で出力した。しかしこのソースでは出力されるjsonの{}が[]になってしまうという問題も解決出来ておりません。

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

TN8001👍を押しています

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

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

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

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

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

hihijiji

2020/05/23 08:41

{"aaa": "1" ,"bbb": "2", "ccc": "3" } {"aaa": "50" ,"bbb": "70", "ccc": "90" } だとJSONになってませんからライブラリを使う方が面倒な気がします。
guest

回答1

0

ベストアンサー

こんなのでいいですか?

cs

1using System; 2using System.IO; 3using System.Linq; 4using System.Text; 5using Newtonsoft.Json; 6 7namespace CsvRead 8{ 9 class Test 10 { 11 static void Main() 12 { 13 var sr = new StreamReader(@"test.csv", Encoding.GetEncoding("shift_jis")); 14 { 15 var keys = sr.ReadLine().Split(','); 16 while(!sr.EndOfStream) 17 { 18 var values = sr.ReadLine().Split(','); 19 var dic = keys.Zip(values, (k, v) => new { k, v }).ToDictionary(x => x.k, x => x.v); 20 Console.WriteLine(JsonConvert.SerializeObject(dic)); 21 } 22 } 23 } 24 } 25}

参考
.net - Map two lists into a dictionary in C# - Stack Overflow

投稿2020/05/23 10:00

編集2023/07/22 04:40
TN8001

総合スコア9862

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

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

aruto417

2020/05/24 23:38

参考もとてもありがたいです。ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問