C# JSON string send webmethod I want convert to dictionary
ผมแปลง ค่า form ด้วย jquery เป็น json string โดยใช้ webmethod ในการรับค่า
ผมต้องการแปลง json string ให้ กลายมาเป็น dictionary
Code (JavaScript)
var data = JSON.stringify($("#form_sale_manager").serializeArray());
PageMethods.save_sale_manager(data, successsalemanager);
การแปลง เป็น json string
Code
data: "[{"name":"txt_name","value":""},{"name":"txt_surname","value":""},{"name":"txt_birthday","value":""},{"name":"txt_cradit","value":""},{"name":"txt_phone","value":""},{"name":"txt_mobile","value":""},{"name":"txt_email","value":""},{"name":"txt_sex","value":"male"},{"name":"txt_address","value":""},{"name":"txt_moo","value":""},{"name":"txt_moo_ban","value":""},{"name":"txt_sub_soi","value":""},{"name":"txt_soi","value":""},{"name":"txt_road","value":""},{"name":"txt_tumbol","value":""},{"name":"txt_amphur","value":""},{"name":"txt_province","value":""},{"name":"txt_postcode","value":""}]"
รูปแบบค่าที่ส่งไปครับ
Code (C#)
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string save_sale_manager(string data)
{
dynamic element = JsonConvert.DeserializeObject(data);
return element.txt_name <----- Debug บรรทัดนี้
}
ฝั่ง c#
ต้องการให้ json แปลง ออกมาเป็น Array key value เช่น element["txt_name"] --> value = "สมชาย"
รบกวนผู้รู้ให้คำแนะนำด้วยครับTag : .NET
Date :
2014-06-19 01:59:08
By :
kokiflam
View :
2363
Reply :
8
จะต้องสร้าง Class มา Mapping ก่อนน่ะครับ
Code
[{"Name":"Weerachai","Surname":"Nukitram"},{"Name":"Adisorn","Surname":"Bunsong"}]
Code (C#)
public class myName
{
public string Name { get; set; }
public string Surname { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
string strJSON = null;
// JSON = [{"Name":"Weerachai","Surname":"Nukitram"},{"Name":"Adisorn","Surname":"Bunsong"}]
strJSON = " [{\"Name\":\"Weerachai\",\"Surname\":\"Nukitram\"}, {\"Name\":\"Adisorn\",\"Surname\":\"Bunsong\"}]";
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJSON));
ObservableCollection<myName> list = new ObservableCollection<myName>();
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ObservableCollection<myName>));
list = (ObservableCollection<myName>)serializer.ReadObject(ms);
foreach (myName name in list)
{
Console.WriteLine("Name : " + name.Name.ToString());
Console.WriteLine("Surname : " + name.Surname.ToString());
Console.WriteLine("======================");
}
}
VB.NET/C# Create JSON (DataContractJsonSerializer) Serialize and Deserialize
Date :
2014-06-19 09:30:43
By :
mr.win
ใช้ NewtonSoft.Json น่าจะง่ายกว่านะครับ
http://www.codeplex.com
@เจ้าของกระทู้ PageMethods.xxx สิ่งที่คุณได้มามันแลกกับสิ่งที่คุณต้องสูญเสียไป วิธีการพิสูจน์
คลิ๊กขวา เลือก ViewSource
--- สิ่งที่เห็น(ถ้าคุณเห็นเหมือนผม) มันเอาสารพัดลมเพ มาแปะในแต่ละ Page นั้นฯ ยาวเฟื้อยเป็นหางเต่าเลยครับ
ได้ไม่คุ้มเสียครับ
Date :
2014-06-19 10:14:14
By :
หน้าฮี
xxx.ID = New Random() (1,10000) + New Guid().ToString()
xxx.Name = New Random() (1,10000) + New Guid().ToString()
ถ้าหาเจอก็คงต้องยอมแพ้ล่ะครับ คงต้องหาวิธีอื่นฯเพื่อป้องกันต่อไปครับ
Good Luck.
Date :
2014-06-19 10:48:10
By :
หน้าฮี
ต่อเนื่องจาก #No 5 สมมุติว่าโดนเจาะเข้ามาอีก มันมี Standard Control อีกตัวหนึ่งที่ไม่ Render กลับไปที่ Client ครับ
ลองดูดีฯครับ (MV)
Date :
2014-06-19 11:09:35
By :
หน้าฮี
ผมส่งค่าได้แล้วครับ สำหรับคนที่ต้องการทำคล้ายๆกัน
Code (JavaScript)
var data = JSON.stringify($("#form_sale_manager").serializeArray());
PageMethods.save_sale_manager(data, successsalemanager);
ฝั่ง Jquery
Code (C#)
var key = "";
var value = "";
var js = new System.Web.Script.Serialization.JavaScriptSerializer();
var objs = (object[])js.Deserialize(data, typeof(object));
Dictionary<string, string> dic = new Dictionary<string, string>();
foreach (Dictionary<string, object> item in objs)
{
key = item["name"].ToString();
value = item["value"].ToString();
dic.Add(key, value);
}
c#
Date :
2014-06-19 16:00:16
By :
kokiflam
Date :
2014-06-19 16:16:28
By :
mr.win
Load balance : Server 03