Как создать строку JSON в C # - PullRequest
211 голосов
/ 29 июня 2009

Я просто использовал XmlWriter для создания некоторого XML для отправки обратно в ответ HTTP. Как бы вы создали строку JSON. Я предполагаю, что вы просто используете string Builder для построения строки JSON, и они форматируют ваш ответ как JSON?

Ответы [ 13 ]

1 голос
/ 08 августа 2014

Я обнаружил, что вам не нужен сериализатор. Если вы возвращаете объект в виде списка. Позвольте мне привести пример.

В нашем asmx мы получаем данные, используя переменную, которую мы передали

// return data
[WebMethod(CacheDuration = 180)]
public List<latlon> GetData(int id) 
{
    var data = from p in db.property 
               where p.id == id 
               select new latlon
               {
                   lat = p.lat,
                   lon = p.lon

               };
    return data.ToList();
}

public class latlon
{
    public string lat { get; set; }
    public string lon { get; set; }
}

Затем, используя jquery, мы получаем доступ к сервису, передавая эту переменную.

// get latlon
function getlatlon(propertyid) {
var mydata;

$.ajax({
    url: "getData.asmx/GetLatLon",
    type: "POST",
    data: "{'id': '" + propertyid + "'}",
    async: false,
    contentType: "application/json;",
    dataType: "json",
    success: function (data, textStatus, jqXHR) { //
        mydata = data;
    },
    error: function (xmlHttpRequest, textStatus, errorThrown) {
        console.log(xmlHttpRequest.responseText);
        console.log(textStatus);
        console.log(errorThrown);
    }
});
return mydata;
}

// call the function with your data
latlondata = getlatlon(id);

И мы получаем наш ответ.

{"d":[{"__type":"MapData+latlon","lat":"40.7031420","lon":"-80.6047970}]}
1 голос
/ 29 июня 2009

DataContractJSONSerializer сделает все для вас так же просто, как XMLSerializer. Это тривиально, чтобы использовать это в веб-приложении. Если вы используете WCF, вы можете указать его использование с атрибутом. Семейство DataContractSerializer также очень быстрое.

0 голосов
/ 20 марта 2019

Simlpe использует библиотеки Newtonsoft.Json и Newtonsoft.Json.Linq .

        //Create my object
        var my_jsondata = new
        {
            Host = @"sftp.myhost.gr",
            UserName = "my_username",
            Password = "my_password",
            SourceDir = "/export/zip/mypath/",
            FileName = "my_file.zip"
        };

        //Tranform it to Json object
        string json_data = JsonConvert.SerializeObject(my_jsondata);

        //Print the Json object
        Console.WriteLine(json_data);

        //Parse the json object
        JObject json_object = JObject.Parse(json_data);

        //Print the parsed Json object
        Console.WriteLine((string)json_object["Host"]);
        Console.WriteLine((string)json_object["UserName"]);
        Console.WriteLine((string)json_object["Password"]);
        Console.WriteLine((string)json_object["SourceDir"]);
        Console.WriteLine((string)json_object["FileName"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...