2013-07-30 20 views
5

json dizesini oluşturmak için bu yöntemi kullanıyorum ve bu iyi çalışıyor. Ama daha fazla özellik içeriyorsa bunu başaramam. Bundan daha iyi bir yöntem var mı?Json Format Dize Oluşturma

string.Format("{0}{1}longUrl{1}:{1}{2}{1}{3}", "{", "\"", longUrl,"}"); 

çıktı Eh

{"longUrl":"http://api.themoviedb.org/3/person/12835?api_key=2c50a994de5291887a4e062edd229a72"} 

cevap

8

, bir Json kütüphanesi kullanmak olacaktır Bunu yapmanın bir "daha iyi" yoludur. Bu bir Asp.Net web sitesi bağlamında ise (son sürümlerde), otomatik olarak başvurulan Json.Net kitaplığı vardır. Aksi halde, projenize referans eklemek için Nuget'i kullanabilir veya el ile eklemeyi tercih edebilirsiniz. Daha sonra yapabileceği: ayrıca sadece new { longUrl } kullanabilir ve mülkiyet adı değişken adıyla aynı olacak

JsonConvert.SerializeObject(new { longUrl = longUrl }); 

Not.

+0

Teşekkür ... –

+0

O 'JsonConvert.SerializeObject olmalıdır (yeni {longUrl = longUrl});' Bu @ajgarn :) – ajgarn

+0

olsa doğru. Onu düzeltti. :) –

2

JSON.NET gibi bir JSON seri hale getirici kullanabilirsiniz. Bu gerçekleşmediği takdirde, sen biraz kolaylaştırabilirsiniz:

string.Format(@"{{""longUrl"":""{0}""}}", longUrl); 
+0

Çalışmayacağına inanıyorum. {0} dışında birden fazla {ve} var ve string.Format() için sorunlu. – wooohoh

1

Sen Newtonsoft.Json kullanabilirsiniz:

using System.Text; 
using Newtonsoft.Json; 
using System; 
using System.IO; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var d = new 
     { 
      longUrl = "http://api.themoviedb.org/3/person/12835?api_key=2c50a994de5291887a4e062edd229a72", 
      someOtherProeprty = 1 
     }; 
     var s = new JsonSerializer(); 
     var sb = new StringBuilder(); 
     using (var w = new StringWriter(sb)) 
     { 
      s.Serialize(w, d); 
     } 
     Console.WriteLine(sb.ToString()); 
    } 
} 
0

Eğer using System.Web.Script.Serialization; sonra

var dict = new Dictionary<string, string> 
      { 
       {"longUrl","http://api.themoviedb.org/3/person/12835?api_key=2c50a994de5291887a4e062edd229a72"}, 
       {"anotherUrl", "another Url"} 
      }; 

var serializer = new JavaScriptSerializer(); 
serializer.Serialize(dict); 
7

yapabilirsiniz Sen JSON.Net kitaplığını kullanabilirsiniz. String formatter kullanmak yerine JSON'a gizlemek istediğiniz bir varlık sınıfı oluşturabilirsiniz. Örneğin, örn.

public class Account 
    { 
     public string Email { get; set; } 
     public bool Active { get; set; } 
     public DateTime CreatedDate { get; set; } 
     public IList<string> Roles { get; set; } 
    } 

Account account = new Account 
    { 
    Email = "[email protected]", 
    Active = true, 
    CreatedDate = new DateTime(2013, 1, 20, 0, 0, 0, DateTimeKind.Utc), 
    Roles = new List<string> 
     { 
     "User", 
     "Admin" 
     } 
    }; 

string json = JsonConvert.SerializeObject(account, Formatting.Indented); 

Console.WriteLine(json); 

çıkışı: bu bir iyi çalışıyor

// { 
// "Email": "[email protected]", 
// "Active": true, 
// "CreatedDate": "2013-01-20T00:00:00Z", 
// "Roles": [ 
//  "User", 
//  "Admin" 
// ] 
// } 
+0

+1, Detaylı açıklama için teşekkürler –