J'utilise cette méthode pour former la chaîne json
et cela fonctionne très bien. Mais je ne peux pas gérer cela s'il contient plus de propriétés. Existe-t-il une meilleure méthode que celle-là?
string.Format("{0}{1}longUrl{1}:{1}{2}{1}{3}", "{", "\"", longUrl,"}");
La sortie est
{"longUrl":"http://api.themoviedb.org/3/person/12835?api_key=2c50a994de5291887a4e062edd229a72"}
Eh bien, une "meilleure" façon de faire serait d'utiliser une bibliothèque Json. Si cela se trouve dans le contexte d'un site Web Asp.Net (dans les dernières versions), il existe la bibliothèque Json.Net qui est automatiquement référencée. Sinon, vous pouvez utiliser Nuget pour ajouter une référence à votre projet ou l'ajouter manuellement, selon votre préférence. Vous pourriez alors faire:
JsonConvert.SerializeObject(new { longUrl = longUrl });
Notez que vous pouvez également simplement utiliser new { longUrl }
et le nom de la propriété sera identique à celui de votre variable.
Vous pouvez utiliser JSON.Net library. Vous pouvez créer une classe d'entité que vous souhaitez convertir en JSON plutôt que d'utiliser le formateur de chaîne.
par exemple
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);
// {
// "Email": "[email protected]",
// "Active": true,
// "CreatedDate": "2013-01-20T00:00:00Z",
// "Roles": [
// "User",
// "Admin"
// ]
// }
Vous pouvez simplement utiliser un sérialiseur JSON tel que JSON.NET . À défaut, vous pouvez simplifier un peu:
string.Format(@"{{""longUrl"":""{0}""}}", longUrl);
Vous pouvez utiliser Newtonsoft.Json :
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());
}
}
vous pouvez using System.Web.Script.Serialization;
puis faire
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);