NetcoreでのJSONとXML操作
JSON操作
1.概要
要素タイプ
識別
例を挙げる
数値
直接与える
"num":666
文字列
「」ID
"name":"xiaoming"
オブジェクト
{}ID
"p":{"fruit":"apple"}
はいれつ
[]ID
"colors":["red","blue","green"] {
//
"type": "truck",
//int
"wheeks": 6,
//
"owner": {
"name": "John",
"age": "42"
},
//
"colors": [ "red", "blue", "green" ]
}
2.読み取り
jsonファイル[
{
"Name": " ",
"Date": "20200909",
"Have": {
"Toys": [ "car", "ipad", "phone" ],
"Money": 120000
}
},
{
"Name": " ",
"Date": "20200809",
"Have": {
"Toys": [ "rocket", "xbox", "sp" ],
"Money": 180000
}
}
]
コンテンツの読み込み
内容
操作
JSOONにロード
JsonDocument.Parse(情報Stream)
ルート要素の取得
JSONファイルオブジェクトRootElement
配列要素の取得
JSONファイルオブジェクト[配列下付きint]
属性の取得
JSONファイルオブジェクトGetProperty(プロパティstring)using(var fs=new FileStream("test.json",FileMode.Open))
{
using (var cmt = JsonDocument.Parse(fs))
{
var t = cmt.RootElement[0].GetProperty("Have").GetProperty("Toys")[2];
WriteLine(t);
}
}
遍歴する
JSONファイルオブジェクトEnumerateArray()反復可能なセットの取得using (var fs = new FileStream("data.json", FileMode.Open))
{
using (JsonDocument js = JsonDocument.Parse(fs))
{
foreach (var item in js.RootElement.EnumerateArray())
{
foreach(var jtem in item.GetProperty("Have").GetProperty("Toys").EnumerateArray())
{
WriteLine(jtem);
}
}
}
}
3.書き込み
内容
操作
配列の開始と終了を書き込む
WriteStartArray()とWriteEndArray()
書き込みオブジェクトの開始と終了
WriteStartObject()とWriteEndObject()
書き込み文字列
WriteString(名前String、コンテンツstring)
書き込み数
WriteNumber(名前String、コンテンツstring)using(var stream=new FileStream("data.json",FileMode.Create))
{
using (var jw = new Utf8JsonWriter(stream))
{
//
jw.WriteStartArray();
//
jw.WriteStartObject();
//
jw.WriteString("date", DateTime.UtcNow);
//
jw.WriteNumber("temp", 42);
//
jw.WriteEndObject();
//
jw.WriteStartObject();
//
jw.WriteString("date", DateTime.UtcNow);
//
jw.WriteNumber("temp", 43);
//
jw.WriteEndObject();
//
jw.WriteEndArray();
}
}
結果の書き込み[
{
"date": "2020-03-18T14:11:04.9090202Z",
"temp": 42
},
{
"date": "2020-03-18T14:11:04.9106672Z",
"temp": 43
}
]
4.シーケンス化と逆シーケンス化
jsonファイルに対応するクラスを定義し、シーケンス化と逆シーケンス化の間にタイプを入力します.
4.1逆シーケンス化
オブジェクトを取得var obj=JsonSerializer.Deserialize(str);
var obj=JsonSerializer.Deserialize>(str);
4.2シーケンス化
JSON文字列を取得var str=JsonSerializer.Serialize(ps);
var dt=JsonSerializer.Deserialize>(str);
XMLアクション
1.概要
を選択します.
識別
例を挙げる
ドキュメント宣言
要素/ラベル >
ツールバーの
コメント
があるかもしれません
{
//
"type": "truck",
//int
"wheeks": 6,
//
"owner": {
"name": "John",
"age": "42"
},
//
"colors": [ "red", "blue", "green" ]
}
[
{
"Name": " ",
"Date": "20200909",
"Have": {
"Toys": [ "car", "ipad", "phone" ],
"Money": 120000
}
},
{
"Name": " ",
"Date": "20200809",
"Have": {
"Toys": [ "rocket", "xbox", "sp" ],
"Money": 180000
}
}
]
using(var fs=new FileStream("test.json",FileMode.Open))
{
using (var cmt = JsonDocument.Parse(fs))
{
var t = cmt.RootElement[0].GetProperty("Have").GetProperty("Toys")[2];
WriteLine(t);
}
}
using (var fs = new FileStream("data.json", FileMode.Open))
{
using (JsonDocument js = JsonDocument.Parse(fs))
{
foreach (var item in js.RootElement.EnumerateArray())
{
foreach(var jtem in item.GetProperty("Have").GetProperty("Toys").EnumerateArray())
{
WriteLine(jtem);
}
}
}
}
using(var stream=new FileStream("data.json",FileMode.Create))
{
using (var jw = new Utf8JsonWriter(stream))
{
//
jw.WriteStartArray();
//
jw.WriteStartObject();
//
jw.WriteString("date", DateTime.UtcNow);
//
jw.WriteNumber("temp", 42);
//
jw.WriteEndObject();
//
jw.WriteStartObject();
//
jw.WriteString("date", DateTime.UtcNow);
//
jw.WriteNumber("temp", 43);
//
jw.WriteEndObject();
//
jw.WriteEndArray();
}
}
[
{
"date": "2020-03-18T14:11:04.9090202Z",
"temp": 42
},
{
"date": "2020-03-18T14:11:04.9106672Z",
"temp": 43
}
]
var obj=JsonSerializer.Deserialize(str);
var obj=JsonSerializer.Deserialize>(str);
var str=JsonSerializer.Serialize(ps);
var dt=JsonSerializer.Deserialize>(str);
1.概要
を選択します.
識別
例を挙げる
ドキュメント宣言
要素/ラベル
>
ツールバーの
コメント
があるかもしれません