在 C# 中制作 JSONP 文件
Make JSONP file in C#
我正在使用 C# 中的对象。
public class City
{
public int id { get; set; }
public string label { get; set; }
}
我需要创建一个 JSONP 文件。我希望能得到这样的东西
Places({"id": 1, "label": "London"}, {"id": 2, "label": "Paris"})
我试过使用
JsonSerializer serializer = new JsonSerializer(); ´
JavaScriptSerializer s = new JavaScriptSerializer();
using (StreamWriter file = File.CreateText("myJson.json"))
{
serializer.Serialize(file, string.Format("{0}({1})", "Places", s.Serialize(places)));
file.Close();
}
但我的结果文件是这样的:
"Places([{\"id\":1,\"label\":\"London\"}, {\"id\":2,\"label\":\"Paris\"}])"
这个结果对我的“\"”字符不起作用
您将原始数据序列化为 JSON 两次,所以结果是 JSON 包含的字符串本身是 JSON.
您应该简单地将 JSON 与 suffix/prefix 进行字符串连接,如 How can I manage ' in a JSONP response? 中所示:
var jsonpPrefix = "Places" + "(";
var jsonpSuffix = ")";
var jsonp =
jsonpPrefix +
s.Serialize(places) +
jsonpSuffix);
将其写入文件的最简单方法就是 File.WriteAllText("myJson.jsonp", jsonp)
。
或者不先构造字符串,直接将其写入文件
using (StreamWriter sw = new StreamWriter("myJson.jsonp"))
{
sw.Write("Places(");
sw.Write(s.Serialize(places));
sw.Write(")"
}
旁注:将 JSONP 保存到文件有点奇怪,因为它通常只是作为对跨域 AJAX 请求的响应发送 - 因此请确保您确实需要 JSONP而不仅仅是 JSON.
我正在使用 C# 中的对象。
public class City
{
public int id { get; set; }
public string label { get; set; }
}
我需要创建一个 JSONP 文件。我希望能得到这样的东西
Places({"id": 1, "label": "London"}, {"id": 2, "label": "Paris"})
我试过使用
JsonSerializer serializer = new JsonSerializer(); ´
JavaScriptSerializer s = new JavaScriptSerializer();
using (StreamWriter file = File.CreateText("myJson.json"))
{
serializer.Serialize(file, string.Format("{0}({1})", "Places", s.Serialize(places)));
file.Close();
}
但我的结果文件是这样的:
"Places([{\"id\":1,\"label\":\"London\"}, {\"id\":2,\"label\":\"Paris\"}])"
这个结果对我的“\"”字符不起作用
您将原始数据序列化为 JSON 两次,所以结果是 JSON 包含的字符串本身是 JSON.
您应该简单地将 JSON 与 suffix/prefix 进行字符串连接,如 How can I manage ' in a JSONP response? 中所示:
var jsonpPrefix = "Places" + "(";
var jsonpSuffix = ")";
var jsonp =
jsonpPrefix +
s.Serialize(places) +
jsonpSuffix);
将其写入文件的最简单方法就是 File.WriteAllText("myJson.jsonp", jsonp)
。
或者不先构造字符串,直接将其写入文件
using (StreamWriter sw = new StreamWriter("myJson.jsonp"))
{
sw.Write("Places(");
sw.Write(s.Serialize(places));
sw.Write(")"
}
旁注:将 JSONP 保存到文件有点奇怪,因为它通常只是作为对跨域 AJAX 请求的响应发送 - 因此请确保您确实需要 JSONP而不仅仅是 JSON.