ひとつNET汎用JSON解析/構築クラスの実...
13321 ワード
ひとつNET汎用JSON解析/構築クラスの実装(c#)
はい.NET Framework 3.5にはJSONオブジェクトのシーケンス化ツールが用意されていますが、彼は強いタイプで、まずJSONオブジェクトのフォーマットでタイプを定義し、タイプにJSONシーケンス化特性を加えなければなりません.本稿では,JSONの解析とシーケンス化を実現する高度に柔軟なJSON汎用タイプ(JsonObject)を提供することを試みる.
JSONオブジェクトの内容は次のように仮定します.
行番号を隠す?JSON
JsonObjectを使用して構築するには、次の3つの方法があります.方法1:
行番号を隠す?C#
方式2:
行番号を隠す?C#
方式3:
行番号を隠す?C#
Jsonオブジェクトのプロパティ値を取得する方法には、次の3つの方法があります.
行番号を隠す?C#
ToString関数を直接使用して、JsonObjectをJson文字列に変換します.
行番号を隠す?C#
注意:
私は、ToString関数をリロードする際、文字列をJavscript文字列タイプ(すなわち、エスケープが必要な文字の処理)に変換していません.もちろん、実現するのも極めて簡単です.また、Stringパラメータ付きのToStringについても、私は特殊な処理をするために、興味のある友达が自分で実現することができます.
Technoratiラベル:.NET, JSON, C#
はい.NET Framework 3.5にはJSONオブジェクトのシーケンス化ツールが用意されていますが、彼は強いタイプで、まずJSONオブジェクトのフォーマットでタイプを定義し、タイプにJSONシーケンス化特性を加えなければなりません.本稿では,JSONの解析とシーケンス化を実現する高度に柔軟なJSON汎用タイプ(JsonObject)を提供することを試みる.
JSONオブジェクトの内容は次のように仮定します.
行番号を隠す?JSON
{
orders: {
date: '21:31:59',
name: 'Xfrog',
books: [{
name: 'C# ',
publish: '2010-3-24'
}, {
name: 'C# ',
publish: '2009-10-16'
}]
},
blog: 'http://www.cnblogs.com/xfrog'
}
JsonObjectを使用して構築するには、次の3つの方法があります.方法1:
行番号を隠す?C#
//
JsonObject json = new JsonObject();
json["orders"] = new JsonProperty(new JsonObject());
json["blog"] = new JsonProperty("http://www.cnblogs.com/xfrog");
JsonObject config = json.Properties<<SPAN style="COLOR: rgb(43,145,175)">JsonObject>("orders");
json["orders"]["date"] = new JsonProperty(DateTime.Now.ToLongTimeString());
json["orders"]["name"] = new JsonProperty("Xfrog");
json["orders"]["books"] = new JsonProperty();
JsonProperty book = json["orders"]["books"].Add(new JsonObject());
book["name"] = new JsonProperty("C# ");
book["publish"] = new JsonProperty("2010-3-24");
book = json["orders"]["books"].Add(new JsonObject());
book["name"] = new JsonProperty("C# ");
book["publish"] = new JsonProperty("2009-10-16");
方式2:
行番号を隠す?C#
//
JsonObject json2 = new JsonObject((a) =>
{
a["orders"] = new JsonProperty(new JsonObject((b) =>
{
b["date"] = new JsonProperty(DateTime.Now.ToLongTimeString());
b["name"] = new JsonProperty("Xfrog");
b["books"] = new JsonProperty();
b["books"].Add(new JsonObject((c) =>
{
c["name"] = new JsonProperty("C# ");
c["publish"] = new JsonProperty("2010-3-24");
}));
b["books"].Add(new JsonObject((c) =>
{
c["name"] = new JsonProperty("C# ");
c["publish"] = new JsonProperty("2009-10-16");
}));
}));
a["blog"] = new JsonProperty("http://www.cnblogs.com/xfrog");
});
方式3:
行番号を隠す?C#
// Json
JsonObject newObj = new JsonObject(jsonStr);
Jsonオブジェクトのプロパティ値を取得する方法には、次の3つの方法があります.
行番号を隠す?C#
//
Console.WriteLine(newObj["orders"].GetValue<<SPAN style="COLOR: rgb(43,145,175)">JsonObject>()["books"].GetValue<<SPAN style="COLOR: rgb(43,145,175)">List<<SPAN style="COLOR: rgb(43,145,175)">JsonProperty>>()[1].GetValue<<SPAN style="COLOR: rgb(43,145,175)">JsonObject>()["name"].Value);
//
Console.WriteLine(newObj["orders"].Object["books"].Items[1].Object["name"].Value);
// ,
Console.WriteLine(newObj["orders"]["books"][1]["name"].Value);
ToString関数を直接使用して、JsonObjectをJson文字列に変換します.
行番号を隠す?C#
String jsonStr = json.ToString();
注意:
私は、ToString関数をリロードする際、文字列をJavscript文字列タイプ(すなわち、エスケープが必要な文字の処理)に変換していません.もちろん、実現するのも極めて簡単です.また、Stringパラメータ付きのToStringについても、私は特殊な処理をするために、興味のある友达が自分で実現することができます.
Technoratiラベル:.NET, JSON, C#