无法得到<以JSON字符串显示

时间:2009-06-29 15:20:34

标签: asp.net

好的,首先通过查看此网址听取我的意见:

http://api.flickr.com/services/feeds/photos_public.gne?format=json

注意Description字符串中是否包含非编码的html,例如&lt ;,>等。

以下是我使用ASP.NET 3.5和C#返回JSON的方法:

context.Response.ContentType = "text/plain";
context.Response.Charset = Encoding.UTF8.ToString();

int i = 1;

List<Product> products = GetTestProducts();
List<CrImageList> imageList = new List<CrImageList>();

foreach(Product p in products)
{
    string imageTag = HttpUtility.HtmlEncode(string.Format(@"<img src=""{0}"" alt="""">", ImageUrl(p.Image, false)));

    imageList.Add(new CrImageList{ImageTag = imageTag});
    i++;
}

string jsonString = imageList.ToJSON();
context.Response.Write(jsonString);

以下是此代码返回的JSON,当我点击我的.ashx时调用它,并在包含它的方法中调用此代码:

[{"ImageTag":"&lt;img src=&quot;http://www.ourdomain.com/image/540.jpg&quot; alt=&quot;&quot;&gt;"},{"ImageTag":"&lt;img src=&quot;http://www.ourdomain.com/image/642.jpg&quot; alt=&quot;&quot;&gt;"}]

现在我怎样才能让编码后的字符在我的JSON返回的文本字符串中显示为html字符?

我想&lt;显示&lt;就像Flickr能够用他们的JSON一样。

如果我拿出HtmlEncode:

string.Format(@“”,ImageUrl(p.Image,false));

然后我开始在我的字符串中获取/ u00:

[{"ImageTag":"\u003cimg src=\"http://www.example.com/cat_image/540.jpg\" alt=\"\"\u003e"},
...

那么为什么Flickr的JSON在其描述中没有返回任何干净的HTML?

3 个答案:

答案 0 :(得分:5)

您是否在其他地方使用该字符串?如果您在Javascript中使用它,那么&lt;&gt;并不重要字符正在被转义。

<script type="text/javascript" defer="defer">
document.body.innerHTML = "\u003cimg src=\"http://www.example.com/cat_image/540.jpg\" alt=\"\"\u003e";
</script>

与:

相同
<script type="text/javascript" defer="defer">
document.body.innerHTML = "<img src=\"http://www.example.com/cat_image/540.jpg\" alt=\"\">";
</script>

在Javascript中,这些字符串在使用它们时几乎是一样的。

答案 1 :(得分:3)

如果您不想编码的值,那么为什么要通过HttpUtility.HtmlEncode方法运行它们?

如果ToJSON不是你可以改变以停止对该角色进行unicode编码的东西,那么你只需要在调用后进行替换......

string jsonString = imageList.ToJSON();
jsonString = jsonString.Replace("\u003c", "<").Replace("\u003e", ">");
context.Response.Write(jsonString);

答案 2 :(得分:0)

使用gson将对象转换为json字符串(java示例)

示例:

.custom-date-picker

gson maven依赖项:

Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String output = gson.toJson(input);