Как сериализовать объект в json и отправить его в веб-сервис? - PullRequest
1 голос
/ 30 июня 2011

Как сериализовать объект в json и отправить его в веб-службу?

var object = something....
function BindJson() {
        $.ajax({
            type: "POST",
            url: "NewPage.aspx/GetJson",
            data: "{}",
            contentType: "application/json",
            dataType: "json",
            success: function (data) {

            }
        })
    }

<body onload="BindJson();">

Сервер:

[WebMethod]
        public static string GetSerializedJsonObject()
        {
            return "";
        }

Ответы [ 4 ]

3 голосов
/ 01 июля 2011

Это будет работать для вас (полный рабочий пример кода ниже). Ключ должен передать объект Person. Кроме того, я использовал простой веб-сервис (myService.asmx) вместо aspx-страницы. Зачем беспокоиться о дополнительных издержках, если они не нужны?

Ключ на клиенте создает объект Person и затем использует JSON.stringify для передачи объекта Person в веб-сервис.

Javascript

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.js"></script>
<script type="text/javascript">
    function BindJson() {
        $.ajax({
            type: "POST",
            url: "myService.asmx/SerializeJson",
            data: JSON.stringify({ person:{ firstName: "Denny", lastName: "Cherian", department: "Microsoft PSS", address: { addressline1: "Microsoft India GTSC", addressline2: "PSS - DSI", city: "Bangalore", state: "Karnataka", country: "India", pin: "560028" }, technologies: ["IIS", "ASP.NET", "JavaScript", "AJAX"] }}),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data1) {
                alert(data1.d);
            },
            error: function (request, status, errorThrown) {
                alert(status);
            }
        });
    }

    $(document).ready(function() {
        BindJson();    
    });
</script>

C #

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace TestProject
{
    /// <summary>
    /// Summary description for myService
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService]
    public class myService : System.Web.Services.WebService
    {

        [WebMethod]
        public string SerializeJson(Person person)
        {
            return "Success";
        }

        public class Person
        {
            public string firstName { get; set; }
            public string lastName { get; set; }
            public string department { get; set; }
            public Address address { get; set; }
            public string[] technologies { get; set; }
        }

        public class Address
        {
            public string addressline1 { get; set; }
            public string addressline2 { get; set; }
            public string city { get; set; }
            public string state { get; set; }
            public string country { get; set; }
            public string pin { get; set; }            
        }
    }
}
1 голос
/ 30 июня 2011

Вы можете использовать это

var myJSONText = JSON.stringify (myObject, replacer);

взято из

http://www.json.org/js.html

надеюсь, это поможет.

0 голосов
/ 30 июня 2011

Здесь есть вопрос об этом: Базовый простой Asp.net + пример jQuery + JSON

Вы должны очень легко адаптировать код там к вашим потребностям.Единственное, что не выяснено, это как сериализовать объект в JSON в коде Javascript, но на это уже ответил Билла Устад.

Если вы хотите пойти дальше по этой теме, здесь есть отличная и дидактическая статья: Полный ASP.NET, LINQ, jQuery, JSON, Ajax Tutorial .

Помните: иногда мы просто хотим получить рыбу, но в конечном итоге мы должны научиться ловить нашу собственную рыбу.

0 голосов
/ 30 июня 2011

Взгляните на эту статью MSDN: Сериализация JSON

Person p = new Person();
//Set up Person object...
MemoryStream stream1 = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Person));
ser.WriteObject(stream1, p);

Поток памяти будет содержать ...

{“age”:42,”name”:”John”}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...