2012-04-30 24 views
11

Ben C# için yeni tamamlıyorum ve zaten kendime bir baş ağrısı verdim. Bunun muhtemelen çocuklar için bir şey olduğunu biliyorum, ama bir saat harcadım + etrafta dolaştım ve işe yaramıyor gibi görünmüyor.Anahtarları/değerleri JSON c ile dönüştürme. #

Tek yapmam gereken bir diziyi JSON'a dönüştürmektir. Tam olarak bunu yapmaya çalışıyorum, Şimdi {"key1":"value for key 1","key2":"value for key 2"}

: böylece $jsonArray olacak

$myarr=array("key1"=>"value for key 1","key2"=>"value for key 2"); 

$jsonArray=json_encode($myarr); 

: PHP de, işte ben (PHP) yapmaya çalışıyorum bir örnek ne olduğunu biliyorum ama C# 'da. üzerinde

The type or namespace name 'JavaScriptSerializer' could not be found (are you missing a using directive or an assembly reference?)

Herhangi fikirleri:

String[] keys = new String[] { "emailSend","toEmail"}; 
String[] values = new String[] {textBox2.Text,textBox1.Text}; 
JavaScriptSerializer js = new JavaScriptSerializer(); 
string json = js.Serialize(keys);//final json result 
MessageBox.Show(json);//show me 

I (yukarıdaki kodu ile) bu hatayı atıyor Visual Studio C# 2010 kullanıyorum:

Bu

Bugüne kadar ne var Burada ne yapıyorum? Teşekkürler

cevap

27

Doğru bir using ifadesine sahip değil misiniz? , Doğru biçimlendirilmiş JSON almak için kullanmak yerine Dictionary:

using System.Web.Script.Serialization;

DÜZENLEME: dosyanızın en üstüne ekleyin

var keyValues = new Dictionary<string, string> 
       { 
        { "emailSend", textBox1.Text }, 
        { "toEmail", textBox2.Text } 
       }; 

JavaScriptSerializer js = new JavaScriptSerializer(); 
string json = js.Serialize(keyValues); 
MessageBox.Show(json); 
+4

bunu yani referans (olarak yüklenen yok verir varsayılan olarak). [FastJSON] gibi bir şey kullanmayı seçebilirsiniz (http://www.codeproject.com/Articles/159450/fastJSON). Serializing nesneleri, JavaScriptSerializer'ı kullanmaktan daha kolay ve hızlıdır. – erodewald

+1

Şimdi hatayı alıyorum: ''System.Web' 'ad alanında' Script 'türü veya ad alanı adı mevcut değil (bir montaj referansı eksik misiniz?)' Teşekkürler xD –

+1

@nav_nav Hmm, garip. .NET 3.5 öncesi kullanıyor musunuz? – mattytommo

14

nasıl Json.NET ve JObject kullanma hakkında sınıf? Bir Win veya wpf projesi bunu istemem;

var obj = new JObject(); 

obj["One"] = "Value One"; 
obj["Two"] = "Value Two"; 
obj["Three"] = "Value Three"; 

var serialized = JsonConvert.SerializeObject(obj); 

size

{"One":"Value One","Two":"Value Two","Three":"Value Three"} 
Bu durumda System.Web.Extensions.dll içindedir
+1

Bununla birlikte, şunu elde ederim: ''JObject' türü veya ad alanı adı bulunamadı (kullanma yönergesi veya montaj referansı eksik mi?)' Ve 'Geçerli içerikte 'JsonConvert' adı mevcut değil –

+2

json.net kütüphanesini ekledin mi? -> http://json.codeplex.com/ – MUG4N

+0

* JObject bulunamadı * durumunda, 'newtonsoft.Json.Linq;' kullanarak eklemeniz gerekir. kütüphane. – Fil

İlgili konular