JSON数据中的"<"字符序列化为\ u003c

 坦普拉尼洛 发布于 2023-01-29 09:48

我有一个JSON对象,其中一个元素的值是一个字符串.在这个字符串中有字符"".我拿这个整个JSON对象,在我的ASP.NET服务器代码中,我执行以下操作来获取命名对象rpc_response并将其添加到POST响应中的数据:

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
HttpContext.Current.Response.AddHeader("Pragma", "no-cache");
HttpContext.Current.Response.AddHeader("Cache-Control", "private, no-cache");
HttpContext.Current.Response.AddHeader("Content-Disposition", "inline; filename=\"files.json\"");
HttpContext.Current.Response.Write(serializer.Serialize(rpc_response));
HttpContext.Current.Response.ContentType = "application/json";
HttpContext.Current.Response.StatusCode = 200;

在序列化对象之后,我在另一端(不是Web浏览器)接收它,并且该特定字符串如下所示:\u003cRPC\u003e.

我该怎么做才能防止这些(和其他)字符被正确编码,仍然可以序列化我的JSON对象?

1 个回答
  • 字符被编码"正确"!1使用有效的JSON库来正确访问JSON数据 - 它是一种有效的 JSON编码.

    转义这些字符可防止通过JSON进行HTML注入 - 并使JSON XML友好.也就是说,即使JSON直接emited到JavaScript(如做是相当频繁的JSON是有效的2的JavaScript的子集),它不能用于终止<script>早期的元素,因为相关的字符(例如<,>)的内JSON编码本身.

    该标准JavaScriptSerializer没有要改变这种行为的能力.这种转义在Json.NET实现中可能是可配置的(或不同的)- 但是,它应该无关紧要,因为有效的JSON客户端/库必须理解转义.\u


    1来自RFC 4627:JavaScript对象表示法的应用程序/ json媒体类型(JSON),

    任何角色都可能被转义.如果字符在基本多语言平面(U + 0000到U + FFFF)中,那么它可以表示为六个字符的序列:反向固相,后跟小写字母u,后跟四个十六进制数字,编码角色的代码点..

    另请参阅C#将Facebook响应转换为正确的编码字符串(这也与JSON转义相关).

    2有一种罕见的情况,当这不成立,但忽略(或说明)..

    2023-01-29 09:51 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有