C#のは、JSONを解析するには、2つの方法があります

 

 

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

おすすめ

転載: www.cnblogs.com/cfas/p/11080203.html