C#が使用する方法でJSONを変換します!
これは、2,4を紹介します。第三の方法より限定された使用ので、私は中に綿密な調査を持っていません。
第二の方法
私はより多くの方法を使用し、この方法は、組み込みの.NET、より便利に使用することです
、JSONシリアライザを使用すると、一般的なオブジェクトを取得します
辞書を使用して<文字列、オブジェクト>オブジェクト変換受信JSONは終了し、所望のオブジェクトは、JSON汎用クエリコマンドを使用して抽出することができます。
文字列JsonData =「xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx」。 JavaScriptSerializerシリアライザ=新しいJavaScriptSerializer(); 辞書<文字列、オブジェクト> JSON =(辞書<文字列、オブジェクト>)serializer.DeserializeObject(JsonData)。 ストリングのfirstKey = json.ElementAt(0).KEY。 ストリングsecondKey = json.ElementAt(1).KEY。
もちろん、そこに他の多くのデータ型は、その柔軟な使用変換すること。
オブジェクト[] jsonInnerObj =(オブジェクト[])serializer.DeserializeObject(jsonList)。 //强制类型转化 辞書<文字列、オブジェクト> jsonLast =(辞書<文字列、オブジェクト>)jsonInnerObj [I]。
JSONを受信するためにオブジェクトのクラスを使用して、B、
情報クラスのパブリック { 公共の一覧<TitleProperty>タイトル{GET、SET;} //属性の名前を、同じJSON形式の文字列を「キー」の値でなければなりません。 {; SET;公共}プリサム文字列GET パブリックリスト<CalculateFeature> {CalculateSum取得または設定;}処理//配列を 公共の文字列[]フロートを取得または設定;} // アレイ処理 公衆リスト<RowCells>のTableCell; //パン処理タイプ }
形式のJSONオブジェクトに応じて、クラスを作成します。{:、「B」「A」「B」「A」}、{「なお、アレイと汎用アレイとの間の差は、[123123123]データのタイプ、および汎用[です":" A "" B ":" B "}、{" A ":" A "" B ":" データB「}]と入力。
あなたがジェネリックを読み続けるならば、我々はまた再びのための対応するデータクラスを作成する必要があります。
コントロールページで使用した後、
JSON形式の文字列= [ "TextArea1"]; JavaScriptSerializer JavaScriptSerializer新しい新しいJS =(); //データをシリアル化することができるクラスインスタンス化 情報リストを= js.Deserialize <詳細>( JSON); // オブジェクトのJSONにデータリストのタイプに割り当てられ 、リスト<TitleProperty> = list.Titleタイトル 文字列プリサム= list.PreSum; リスト<CalculateFeature> calculateSum = list.CalculateSum; 文字列[] =フロートlist.Float; リスト<RowCells> TABLELIST = list.TableCell ;
C、直列化復元
デシリアライズは、それが一般的なものであれば、それに対応するジェネリックは、キーに直接付着させることができ、比較的簡単で、C#の意志自動保存はJSON形式です。
JSON(新しい{TotalItem = totalItem、ページ=ページ、TOTALPAGE = pageCountInt、一覧= _viewModel.InfoListVM}、JsonRequestBehavior.AllowGet)を返します。
第四の方法、より汎用性、およびLINQを使用することができますので、より多くのお勧め!
4.1クラスライブラリNewtonsoft.Json(http://json.codeplex.com/をダウンロードしてください)。プロジェクトをダウンロードした後で参加することができるようになります。
一般的にjオブジェクト、JsonReader、JsonWriterプロセスを使用していました。このように、最も汎用性と柔軟性とは、いつでも変更することができます。
4.2詳細
4.2.0名前空間を追加:Newtonsoft.Jsonを使用して、
4.2.1使用JsonReaderは、JSON文字列を読みます
ストリングjsonText = @ "{" "入力" ": ""値""、 ""出力"": ""結果""}"。 JsonReaderリーダー=新しいJsonTextReader(新しいにStringReader(jsonText))。 一方、(reader.Read()) { Console.WriteLineを(reader.TokenType + "\ T \ T" + reader.ValueType + "\ T \ T" + reader.Value + "\ R \ n"); } Console.ReadKey()。
4.2.2使用JsonWriter書き込み文字列
StringWriter SW =新にStringWriter(); JsonWriterライター=新しいJsonTextWriter(SW); writer.WriteStartObject(); writer.WritePropertyName( "入力")。 writer.WriteValue( "値")。 writer.WritePropertyName( "出力"); writer.WriteValue( "結果")。 writer.WriteEndObject(); writer.Flush(); 文字列jsonText2 = sw.GetStringBuilder()のToString(); Console.WriteLineを(jsonText2)。 Console.ReadKey();
4.2.3文字列は、jオブジェクトを読みます
4.2.3.1は、名前空間を追加します。Newtonsoft.Json.Linqを使用して、
ジョー= JObject.Parse jオブジェクト(jsonText); 文字列[] =のjo.Properties値()を選択(項目=> item.Value.ToString())てToArray(); .. 4.2.4用いJsonSerializerライトオブジェクト(ベースJsonWriterそしてJsonReader) 4.2.4.1配列型データ 列jsonArrayText1 =「[{ 'A ': 'A1'、 'B': 'B1'}、{ 'A': 'A2'、 'B': 'B2'}] "; JArray JA =(JArray)JsonConvert.DeserializeObject(jsonArrayText1); [1]文字列ja1a = JA [" A「]のToString();. //または jオブジェクトO =(jオブジェクト)JAの[1]; 文字列O OA = [ "A"]のToString() 。
4.2.4.2ネストされた形式
ストリングjsonText3 = "{\"北京\ ":{\"ゾーン\ ":\"海淀\ "\ "zone_en \":\ "海淀\"}}"。 jオブジェクト方式Jo1 =(jオブジェクト)JsonConvert.DeserializeObject(jsonText3)。 列ゾーン=方式Jo1 [ "北京"] [ "ゾーン"]のToString()。 ストリングzone_en =方式Jo1 [ "北京"] [ "zone_en"]のToString()。
4.2.4.3カスタム使用
1.補助クラス
クラスプロジェクト { 公共の文字列の入力{取得します。セット; } パブリック文字列の出力{取得します。セット; } }
2.
プロジェクトのp =新しいプロジェクト(){入力= "石"、出力= "金"}; JsonSerializerシリアライザ=新しいJsonSerializer(); StringWriter SW1 =新にStringWriter(); serializer.Serialize(新しいJsonTextWriter(SW)、P); Console.WriteLineを(。sw.GetStringBuilder()のToString()); StringReader SR =新しいにStringReader(@ "{" "入力" ":" "石" " ""出力"": ""ゴールド""}"); プロジェクトP1 =(プロジェクト)serializer.Deserialize(新しいJsonTextReader(SR)、typeof演算(プロジェクト)); Console.WriteLineを(p1.Input + "=>" + p1.Output)。 Console.ReadKey();
Newtonsoft.Json高度な使い方について http://www.cnblogs.com/yanweidie/p/4605212.html
C#が使用する方法でJSONを変換します!
これは、2,4を紹介します。第三の方法より限定された使用ので、私は中に綿密な調査を持っていません。
第二の方法
私はより多くの方法を使用し、この方法は、組み込みの.NET、より便利に使用することです
、JSONシリアライザを使用すると、一般的なオブジェクトを取得します
辞書を使用して<文字列、オブジェクト>オブジェクト変換受信JSONは終了し、所望のオブジェクトは、JSON汎用クエリコマンドを使用して抽出することができます。
文字列JsonData =「xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx」。 JavaScriptSerializerシリアライザ=新しいJavaScriptSerializer(); 辞書<文字列、オブジェクト> JSON =(辞書<文字列、オブジェクト>)serializer.DeserializeObject(JsonData)。 ストリングのfirstKey = json.ElementAt(0).KEY。 ストリングsecondKey = json.ElementAt(1).KEY。
もちろん、そこに他の多くのデータ型は、その柔軟な使用変換すること。
オブジェクト[] jsonInnerObj =(オブジェクト[])serializer.DeserializeObject(jsonList)。 //强制类型转化 辞書<文字列、オブジェクト> jsonLast =(辞書<文字列、オブジェクト>)jsonInnerObj [I]。
JSONを受信するためにオブジェクトのクラスを使用して、B、
情報クラスのパブリック { 公共の一覧<TitleProperty>タイトル{GET、SET;} //属性の名前を、同じJSON形式の文字列を「キー」の値でなければなりません。 {; SET;公共}プリサム文字列GET パブリックリスト<CalculateFeature> {CalculateSum取得または設定;}処理//配列を 公共の文字列[]フロートを取得または設定;} // アレイ処理 公衆リスト<RowCells>のTableCell; //パン処理タイプ }
形式のJSONオブジェクトに応じて、クラスを作成します。{:、「B」「A」「B」「A」}、{「なお、アレイと汎用アレイとの間の差は、[123123123]データのタイプ、および汎用[です":" A "" B ":" B "}、{" A ":" A "" B ":" データB「}]と入力。
あなたがジェネリックを読み続けるならば、我々はまた再びのための対応するデータクラスを作成する必要があります。
コントロールページで使用した後、
JSON形式の文字列= [ "TextArea1"]; JavaScriptSerializer JavaScriptSerializer新しい新しいJS =(); //データをシリアル化することができるクラスインスタンス化 情報リストを= js.Deserialize <詳細>( JSON); // オブジェクトのJSONにデータリストのタイプに割り当てられ 、リスト<TitleProperty> = list.Titleタイトル 文字列プリサム= list.PreSum; リスト<CalculateFeature> calculateSum = list.CalculateSum; 文字列[] =フロートlist.Float; リスト<RowCells> TABLELIST = list.TableCell ;
C、直列化復元
デシリアライズは、それが一般的なものであれば、それに対応するジェネリックは、キーに直接付着させることができ、比較的簡単で、C#の意志自動保存はJSON形式です。
JSON(新しい{TotalItem = totalItem、ページ=ページ、TOTALPAGE = pageCountInt、一覧= _viewModel.InfoListVM}、JsonRequestBehavior.AllowGet)を返します。
第四の方法、より汎用性、およびLINQを使用することができますので、より多くのお勧め!
4.1クラスライブラリNewtonsoft.Json(http://json.codeplex.com/をダウンロードしてください)。プロジェクトをダウンロードした後で参加することができるようになります。
一般的にjオブジェクト、JsonReader、JsonWriterプロセスを使用していました。このように、最も汎用性と柔軟性とは、いつでも変更することができます。
4.2詳細
4.2.0名前空間を追加:Newtonsoft.Jsonを使用して、
4.2.1使用JsonReaderは、JSON文字列を読みます
ストリングjsonText = @ "{" "入力" ": ""値""、 ""出力"": ""結果""}"。 JsonReaderリーダー=新しいJsonTextReader(新しいにStringReader(jsonText))。 一方、(reader.Read()) { Console.WriteLineを(reader.TokenType + "\ T \ T" + reader.ValueType + "\ T \ T" + reader.Value + "\ R \ n"); } Console.ReadKey()。
4.2.2使用JsonWriter書き込み文字列
StringWriter SW =新にStringWriter(); JsonWriterライター=新しいJsonTextWriter(SW); writer.WriteStartObject(); writer.WritePropertyName( "入力")。 writer.WriteValue( "値")。 writer.WritePropertyName( "出力"); writer.WriteValue( "結果")。 writer.WriteEndObject(); writer.Flush(); 文字列jsonText2 = sw.GetStringBuilder()のToString(); Console.WriteLineを(jsonText2)。 Console.ReadKey();
4.2.3文字列は、jオブジェクトを読みます
4.2.3.1は、名前空間を追加します。Newtonsoft.Json.Linqを使用して、
ジョー= JObject.Parse jオブジェクト(jsonText); 文字列[] =のjo.Properties値()を選択(項目=> item.Value.ToString())てToArray(); .. 4.2.4用いJsonSerializerライトオブジェクト(ベースJsonWriterそしてJsonReader) 4.2.4.1配列型データ 列jsonArrayText1 =「[{ 'A ': 'A1'、 'B': 'B1'}、{ 'A': 'A2'、 'B': 'B2'}] "; JArray JA =(JArray)JsonConvert.DeserializeObject(jsonArrayText1); [1]文字列ja1a = JA [" A「]のToString();. //または jオブジェクトO =(jオブジェクト)JAの[1]; 文字列O OA = [ "A"]のToString() 。
4.2.4.2ネストされた形式
ストリングjsonText3 = "{\"北京\ ":{\"ゾーン\ ":\"海淀\ "\ "zone_en \":\ "海淀\"}}"。 jオブジェクト方式Jo1 =(jオブジェクト)JsonConvert.DeserializeObject(jsonText3)。 列ゾーン=方式Jo1 [ "北京"] [ "ゾーン"]のToString()。 ストリングzone_en =方式Jo1 [ "北京"] [ "zone_en"]のToString()。
4.2.4.3カスタム使用
1.補助クラス
クラスプロジェクト { 公共の文字列の入力{取得します。セット; } パブリック文字列の出力{取得します。セット; } }
2.
プロジェクトのp =新しいプロジェクト(){入力= "石"、出力= "金"}; JsonSerializerシリアライザ=新しいJsonSerializer(); StringWriter SW1 =新にStringWriter(); serializer.Serialize(新しいJsonTextWriter(SW)、P); Console.WriteLineを(。sw.GetStringBuilder()のToString()); StringReader SR =新しいにStringReader(@ "{" "入力" ":" "石" " ""出力"": ""ゴールド""}"); プロジェクトP1 =(プロジェクト)serializer.Deserialize(新しいJsonTextReader(SR)、typeof演算(プロジェクト)); Console.WriteLineを(p1.Input + "=>" + p1.Output)。 Console.ReadKey();
Newtonsoft.Json高度な使い方について http://www.cnblogs.com/yanweidie/p/4605212.html