0

簡単なTwitterアプリケーションを作成しています。私はもともとXMLを使用したかったのですが、少し検索してJSONの方がはるかに優れていて高速であることがわかったので、それを使用することにしました。

ただし、時間を検索した後、JSONに.netライブラリを使用するHelloWorldチュートリアルを1つ見つけることができませんでした。すべてのチュートリアルは、JSONにサードパーティのライブラリを使用することを示しています。.netからは何も使用できないので、誰かが始め方について少し教えてくれます。

特にSystem.Runtime.Serialization.Json.net4.0で使用

4

4 に答える 4

1

ジェネリックオブジェクトを使用した任意のJsonの1つの逆シリアル化方法については、ここで私の答えを参照してください。

C#は動的JSONを逆シリアル化します

シリアル化については、ToJsonのServiceStack.Text実装に満足しています。

https://github.com/ServiceStack/ServiceStack.Text

彼らのサイトを少しツールすると、プリコンパイルされたバイナリもダウンロードできるようになります。ServiceSTackが行う他のすべてのことを恐れないでください(それがあなたを助けることができない限り-あなたはServiceStack.Text名前空間だけを必要とします)。

于 2012-11-23T05:36:01.660 に答える
0

このリンクに移動MSDNJSON

ただし、このライブラリには、インターネットで利用可能な他のライブラリと比較して、より多くの機能が含まれていません。さらに、それらはオープンソースです。したがって、気が変わった場合は、
まず、次のような使用するライブラリを決定し

ます。1. JSON.NET
2. JSON-Sharp
3. Newtonsoft.JSON および
その他の多くのライブラリ(JSONライブラリのリスト
ライブラリによるチュートリアル。

Newtonsoftにはいくつかの追加機能があるので、私はNewtonsoftを好みます。
また、dateTimeなどの一部のデータ型に対してわずかに異なる実装を提供するため、各ライブラリの仕様を表示することも検討してください(JavaのプロデューサーやC#のコンシューマーなどのクロスプラットフォーム通信を使用していない場合、またはその逆の場合は問題ありません)。

于 2012-11-23T06:01:38.503 に答える
0

私はJSONの経験があまりありませんが、現在、サードパーティのJSONライブラリを使用せずにJSONのシリアル化と逆シリアル化に取り組んでいます。以下の手順に従ってください。

  1. 任意のオブジェクトをシリアル化するための共通ユーティリティを作成します。System.Collections.Genericを使用します。System.Linqを使用します。System.Webを使用します。System.Web.Script.Serializationを使用します。

    namespace Test.Utility
    {
        public class CommonUtility
        {
            public static JavaScriptSerializer javaScriptSerializer = new    JavaScriptSerializer();
    
            public static string SerializeJson(object o)
            {
                return javaScriptSerializer.Serialize(o);
            }
        }
    }
    
  2. 次に、シリアル化する場所にTest.Utilityリファレンスを追加します。

    using Test.Utility;
    
  3. 次に、JSONシリアル化のコードを記述します。

    var Info = new
    {
        TeamCode = TeamCodeTxt.Text,
        TeamName = TeamNameTxt.Text
    };
    

    文字列jsonSerializedStr=CommonUtility.SerializeJson(Info);

  4. デシリアライズ用のコードを記述します。

    class TestInfo
    {
        public TeamCode{set;get;}
        public TeamName{set;get;}
    }
    Info objInfo=new Info();
    objInfo=serializer.Deserialize<TestInfo>(Info);
    
于 2012-11-23T06:43:54.903 に答える
0

System.Runtime.Serialization.Jsonを使用する

[DataContract]
[Serializable]
public class SuperObj
{
  [DataMember]
  public string Foo { get; set; }

  [DataMember]
  public string Bar { get; set; }

  [DataMember]
  public int Baz { get; set; }

  [DataMember]
  public DateTime Qux { get; set; }
}

を使用して文字列にシリアル化できます

var serializer = new DataContractJsonSerializer(typeof(SuperObj));

using (var stream = new MemoryStream())
{
  serializer.WriteObject(stream, obj);
  var jsonString = Encoding.UTF8.GetString(stream.ToArray());
  Console.WriteLine(jsonString);
}

その文字列は逆シリアル化してオブジェクトに戻すことができます

var serializer = new DataContractJsonSerializer(typeof(SuperObj));

using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
  var obj2 = (SuperObj)serializer.ReadObject(stream);
  Console.WriteLine("SuperObj");
  Console.WriteLine(obj2.Foo);
  Console.WriteLine(obj2.Bar);
  Console.WriteLine(obj2.Baz);
  Console.WriteLine(obj2.Qux);
}

他の人が言っているように、サードパーティのライブラリの方が優れている傾向があります(私はServiceStack.TextとJson.Netを使用しました)

于 2012-11-23T06:50:59.913 に答える