112

いくつかの単体テストでは、テスト中のシステムの入力として使用できる特定の JSON 値 (この場合はレコード アルバム) を構築する機能が必要です。

次のコードがあります。

var jsonObject = new JObject();
jsonObject.Add("Date", DateTime.Now);
jsonObject.Add("Album", "Me Against The World");
jsonObject.Add("Year", 1995);
jsonObject.Add("Artist", "2Pac");

これは問題なく動作しますが、私は「魔法の文字列」構文があまり好きではなく、次のような JavaScript の expando-property 構文に近いものを好みます。

jsonObject.Date = DateTime.Now;
jsonObject.Album = "Me Against The World";
jsonObject.Year = 1995;
jsonObject.Artist = "2Pac";
4

7 に答える 7

165

さて、どうですか:

dynamic jsonObject = new JObject();
jsonObject.Date = DateTime.Now;
jsonObject.Album = "Me Against the world";
jsonObject.Year = 1995;
jsonObject.Artist = "2Pac";
于 2013-08-15T05:34:37.347 に答える
81

この操作を使用して、JObject.Parse一重引用符で区切られた JSON テキストを指定するだけです。

JObject  o = JObject.Parse(@"{
  'CPU': 'Intel',
  'Drives': [
    'DVD read/writer',
    '500 gigabyte hard drive'
  ]
}");

これには、実際に JSON であるため、JSON として読み取れるという利点があります。

または、動的なテスト データがあり、JObject.FromObject操作を使用してインライン オブジェクトを提供できます。

JObject o = JObject.FromObject(new
{
    channel = new
    {
        title = "James Newton-King",
        link = "http://james.newtonking.com",
        description = "James Newton-King's blog.",
        item =
            from p in posts
            orderby p.Title
            select new
            {
                title = p.Title,
                description = p.Description,
                link = p.Link,
                category = p.Categories
            }
    }
});

シリアル化に関する Json.net ドキュメント

于 2015-01-05T18:04:26.770 に答える
33

動的 (Xamarin.iOS など) を使用できない環境や、以前の有効な回答に代わるものを探すだけの場合があります。

これらの場合、次のことができます。

using Newtonsoft.Json.Linq;

JObject jsonObject =
     new JObject(
             new JProperty("Date", DateTime.Now),
             new JProperty("Album", "Me Against The World"),
             new JProperty("Year", "James 2Pac-King's blog."),
             new JProperty("Artist", "2Pac")
         )

詳細なドキュメントはこちら: http://www.newtonsoft.com/json/help/html/CreatingLINQtoJSON.htm

于 2016-05-12T23:32:14.083 に答える
-3

Newtonsoft ライブラリを使用して、次のように使用できます。

using Newtonsoft.Json;



public class jb
{
     public DateTime Date { set; get; }
     public string Artist { set; get; }
     public int Year { set; get; }
     public string album { set; get; }

}
var jsonObject = new jb();

jsonObject.Date = DateTime.Now;
jsonObject.Album = "Me Against The World";
jsonObject.Year = 1995;
jsonObject.Artist = "2Pac";


System.Web.Script.Serialization.JavaScriptSerializer oSerializer =
         new System.Web.Script.Serialization.JavaScriptSerializer();

string sJSON = oSerializer.Serialize(jsonObject );
于 2013-08-15T05:43:33.690 に答える