LoginSignup
0
0

More than 1 year has passed since last update.

.Net 6: C# で JSON の Update

Last updated at Posted at 2022-08-07

.Net のバージョン

$ dotnet --version
6.0.302

プロジェクトの作成

mkdir Update01
cd Update01
dotnet new console
Program.cs
// --------------------------------------------------------------------
//	Program.cs
//
//						Aug/07/2022
// --------------------------------------------------------------------
using System;  
using System.IO;
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Serialization;

// --------------------------------------------------------------------
namespace Update01
{
	class Program
	{
	static void Main(string[] args)
	{
		Console.Error.WriteLine("*** 開始 ***");

		string file_json = args[0];

		string	key_in = args[1];
		int	population_in = int.Parse (args[2]);
		Console.WriteLine (key_in + "\t" + population_in);

		string str_json = file_io.file_to_str_proc (file_json);

		Dictionary <string,Object> dict_aa = JsonSerializer.Deserialize
					  <Dictionary <string,Object>> (str_json)!;

		if (dict_aa.ContainsKey (key_in))
		{
		dict_aa = dict_update_proc (dict_aa,key_in,population_in);
		string str_json_out = JsonSerializer.Serialize(dict_aa);

		file_io.file_write_proc (file_json,str_json_out);
		}

	Console.Error.WriteLine("*** 終了 ***");
	}

// --------------------------------------------------------------------
static Dictionary <string,Object> dict_update_proc
	(Dictionary <string,Object> dict_aa,String key_in,int population_in)
{
	Console.WriteLine ("*** update_proc bbb *** key_in = " + key_in);

	String json_unit = JsonSerializer.Serialize(dict_aa[key_in]);
	Console.WriteLine(json_unit);

	Dictionary <string,Object> unit_aa = JsonSerializer.Deserialize
				<Dictionary <string,Object>> (json_unit)!;

	String str_population = population_in.ToString ();

	DateTime dateNow = DateTime.Now;
	string str_date = dateNow.ToString ();

	unit_aa["population"] = str_population;
	unit_aa["date_mod"] = str_date;

	dict_aa[key_in] = unit_aa;

	return	dict_aa;
}

// --------------------------------------------------------------------
	}
}

// --------------------------------------------------------------------
file_io.cs
// --------------------------------------------------------------------
/*
	file_io.cs

				Aug/07/2022


*/
// --------------------------------------------------------------------
using   System;
using   System.IO;
using   System.Text;

// --------------------------------------------------------------------
public class    file_io
{
// --------------------------------------------------------------------
public static string file_to_str_proc (string file_in)
{
	StreamReader fp_in = new StreamReader (file_in);

	string  buff;

	StringBuilder stb = new StringBuilder ();

	while ((buff = fp_in.ReadLine ()!) != null)
		{
		stb.Append (buff);
		}

	fp_in.Close();

	string  str_in = stb.ToString ();

	return  str_in;
}

// --------------------------------------------------------------------
public static void file_write_proc (string file_name,string str_out)
{
	try
		{
	StreamWriter fp_out = new StreamWriter (file_name);

	fp_out.Write (str_out);

	fp_out.Close ();
		}
	catch
		{
		Console.Error.WriteLine ("*** error *** file_write_proc ***");
		}
}
// --------------------------------------------------------------------

}
// --------------------------------------------------------------------

コンパイル

dotnet build

実行

bin/Debug/net6.0/Update01 /var/tmp/json/tochigi.json t0922 3569800
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0