在 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.