Android,使用Json发送数据中,使用的Java转义字符 KanKan原创
kankan原创
与php后台发送数据的时候。要求用到这样的格式。
private void sendJson(){
//初始化自己定义的handler
CashHandler handler = new CashHandler(this);
//请求主地址。写在自己定义Application中了,后面是接口名字
String url = MApplication.get().getAppServiceUrl() + "order/submit";
//自己定义的发送请求方法
LReqEntity entity = new LReqEntity();
entity.setUrl(url);
//Lreqentity中,post方法。传參数的格式是Map(String,String)
Map<String, String> map = new HashMap<String, String>();
//拼接字符串
StringBuffer params = new StringBuffer();
// 从积分商城的提交 JUMPKEY是7,则是从积分商城购买
if (JUMPKEY.equals("7")) {
//dbmanager是自己定义数据库查询方法。查询的是购物车终于购买的订单
List<CarteEntity> cartList = DBManager.get().queryFinalCarte(
userEntity.id);
//拼接字符串
params.append("[");
for (int i = 0; i < cartList.size(); i++) {
CarteEntity scoreEntity = new CarteEntity();
scoreEntity = cartList.get(i);
//下一行就是转义字符。为了发送时候,拼接出来“这个字符,用了转义字符 \"
//这样发送效果就是 {"A":54}
params.append("{\"A\":");
params.append(scoreEntity.id + "");
params.append(",");
params.append("\"B\":");
params.append(scoreEntity.buyCount);
params.append(",");
params.append("\"C\":");
params.append("\"score\"}");
if (i < cartList.size() - 1) {
params.append(",");
}
}
params.append("]");
}
entity.setParams(map);
entity.setReqMode(ReqMothed.POST);
handler.startLoadingData(entity);
}
这样,达到了拼接要求的效果。http://192.168.100.180:85/service/order/submit?{A=[{"A":95,"B":3,"C":"score"},{"A":99,"B":3,"C":"score"}], B=89}
有关转义字符,内容非常多。
JAVA中转义字符:
最多的就是第一条了
1.特殊字符:就3个
\":双引號
\':单引號
\\:反斜线
2.八进制转义序列:\ + 1到3位5数字。范围'\000'~'\377'
\0:空字符
3.Unicode转义字符:\u + 四个十六进制数字;0~65535
\u0000:空字符
4.控制字符:5个
\' 单引號字符
\\ 反斜杠字符
\r 回车
\n 换行
\f 走纸换页
\t 横向跳格
\b 退格
点的转义:. ==> u002E
美元符号的转义:$ ==> u0024
乘方符号的转义:^ ==> u005E
左大括号的转义:{ ==> u007B
左方括号的转义:[ ==> u005B
左圆括号的转义:( ==> u0028
竖线的转义:| ==> u007C
右圆括号的转义:) ==> u0029
星号的转义:* ==> u002A
加号的转义:+ ==> u002B
问号的转义:? ==> u003F
反斜杠的转义: ==> u005C
======================================================================
以下的程序使用了两个Unicode的转义字符,它们是用其十六进制代码来表示Unicode字符。
那么,这个程序会打印什么呢?
Java代码
public class EscapeRout{
public static void main(String[] args){
// \u0022 是双引號的Unicode转义字符
System.out.println("a\u0022.length()
+\u0022b".length());
}
}
public class EscapeRout{
public static void main(String[] args){
// \u0022 是双引號的Unicode转义字符
System.out.println("a\u0022.length()
+\u0022b".length());
}
}
对该程序的一种非常肤浅的分析会觉得它应该打印出26,由于在由两个双引號"a\u0022.length()+\u0022b"标识的字符串之间总共同拥有26个字符。
略微深入一点的分析会觉得该程序应该打印16,由于两个Unicode转义字符每个在源文件里都须要用6个字符来表示。可是它们仅仅表示字符串中 的一个字符。因此这个字符串应该比它的外表看其来要短10个字符。 假设你执行这个程序,就会发现事情远不是这么回事。
它打印的既不是26也不是16。而是2。
理解这个谜题的关键是要知道:Java对在字符串字面常量中的Unicode转义字符没有提供不论什么特殊处理。编译器在将程序解析成各种符号之前, 先将Unicode转义字符转换成为它们所表示的字符[JLS 3.2]。因此,程序中的第一个Unicode转义字符将作为一个单字符字符串字面常量("a")的结束引號。而第二个Unicode转义字符将作为还有一 个单字符字符串字面常量("b")的開始引號。
程序打印的是表达式"a".length()+"b".length(),即2。
假设该程序的作者确实希望得到这样的行为,那么以下的语句将要清楚得多:
Java代码
System.out.println("a".length()+"b".length());
更有可能的情况是该作者希望将两个双引號字符置于字符串字面常量的内部。
使用Unicode转义字符你是不能实现这一点的,可是你能够使用转义字 符序列来实现[JLS 3.10.6]。表示一个双引號的转义字符序列是一个反斜杠后面紧跟着一个双引號(\”)。假设将最初的程序中的Unicode转义字符用转义字符序列来 替换,那么它将打印出所期望的16(错误,应该是14。不知道是怎么会出来16):
Java代码
System.out.println("a\".length()+\"b".length());
很多字符都有对应的转义字符序列,包含单引號(\')、换行(\n)、制表符(\t)和反斜线(\\)。你能够在字符字面常量和字符串字面常量中使用转义字符序列。
实际上。你能够通过使用被称为八进制转义字符的特殊类型的转义字符序列,将不论什么ASCII字符置于一个字符串字面常量或一个字符字面常量中,可是最好是尽可能地使用普通的转义字符序列。
普通的转义字符序列和八进制转义字符都比Unicode转义字符要好得多,由于与Unicode转义字符不同,转义字符序列是在程序被解析为各种符号之后被处理的。
ASCII是字符集的最小公共特性集。它仅仅有128个字符,可是Unicode有超过65,000个字符。一个Unicode转义字符能够被用来在仅仅使用ASCII字符的程序中插入一个Unicode字符。一个Unicode转义字符精确地等价于它所表示的字符。
Unicode转义字符被设计为用于在程序猿须要插入一个不能用源文件字符集表示的字符的情况。它们主要用于将非ASCII字符置于标识符、字符 串字面常量、字符字面常量以及凝视中。
偶尔地,Unicode转义字符也被用来在看起来颇为相似的数个字符中明白地标识当中的某一个。从而添加程序的清晰 度。
总之,在字符串和字符字面常量中要优先选择的是转义字符序列。而不是Unicode转义字符。Unicode转义字符可能会由于它们在编译序列中 被处理得过早而引起混乱。不要使用Unicode转义字符来表示ASCII字符。
在字符串和字符字面常量中。应该使用转义字符序列;对于除这些字面常量之 外的情况,应该直接将ASCII字符插入到源文件里。
转义序列 含义
\n 回车(\u000a)
\t 水平制表符(\u0009)
\b 空格(\u0008)
\r 换行(\u000d)
\f 换页(\u000c)
\' 单引號(\u0027)
\" 双引號(\u0022)
\\ 反斜杠(\u005c)
\ddd 三位八进制
\udddd 四位十六进制
JAVA中转义字符:
1.八进制转义序列:
\ + 1到3位5数字;范围'\000'~'\377'
\0:空字符
2.Unicode转义字符:
\u + 四个十六进制数字;0~65535
\u0000:空字符
八进制的是1到3个数字并且注意数值范围,假设超了范围也会编译错误的,而十六进制的转义必须是4个十六进制数字。并且有一些无法转义,如'\u000a'。无法转移,会出现编译错误,并且相当多的数字没有相应的字符,仅仅会转义成问号 而对于数字的转义,仅仅要不超过范围既能够了。
3.特殊字符:就3个 \":双引號 \':单引號 \\:反斜线
4.控制字符:5个 \' 单引號字符 \\ 反斜杠字符 \r 回车 \n 换行 \f 走纸换页 \t 横向跳格 \b 退格
点的转义:. ==> u002E
美元符号的转义:$ ==> u0024
乘方符号的转义:^ ==> u005E
左大括号的转义:{ ==> u007B
左方括号的转义:[ ==> u005B
左圆括号的转义:( ==> u0028
竖线的转义:| ==> u007C
右圆括号的转义:) ==> u0029
星号的转义:* ==> u002A
加号的转义:+ ==> u002B
问号的转义:? ==> u003F
反斜杠的转义: ==> u005C
Android,使用Json发送数据中,使用的Java转义字符 KanKan原创的更多相关文章
- Android - 向服务器发送数据(POST) - HTTPClient.
该篇文章主要说明使用Apache提供的HTTPClient,通过post方式,向服务器发送数据.由于有些东西在 Android - 向服务器发送数据(GET)中提到过,就不再重复. 一,Android ...
- Android读取JSON格式数据
Android读取JSON格式数据 1. 何为JSON? JSON,全称为JavaScript Object Notation,意为JavaScript对象表示法. JSON 是轻量级的文本数据交换格 ...
- Android - 读取JSON文件数据
Android读取JSON文件数据 JSON - JavaScript Object Notation 是一种存储和交换文本信息的语法. JSON对象在花括号中书写.用逗号来分隔值. JSON数组在方 ...
- Ajax请求php返回json对象数据中包含有数字索引和字符串索引,在for in循环中取出数据的顺序问题
//php中的数组数据格式 Array ( [all] => Array ( [title] => ALL [room_promotion_id] => all ) [best_av ...
- Android创建JSON格式数据
Android创建JSON格式数据 作为上一篇博客的补充,简单那解说了一下Android创建JSON格式数据的小Demo. 1. 创建JSON格式数据 对于Android创建JSON格式数据.因为An ...
- Android - 向服务器发送数据(GET).
在此,使用HTTP协议,通过GET请求,向服务器发送请求,这种方式适合于数据量小,数据安全性要求不高的情况下. 一,服务器端,使用Servlet. 在服务器端,定义一个HttpServlet的子类,以 ...
- Android之JSON格式数据解析
查看原文:http://blog.csdn.net/hantangsongming/article/details/42234293 JSON:JavaScript 对象表示法(JavaScript ...
- android DatagramSocket send 发送数据出错
安卓4.0以后好像不能在主线程里面使用 socket 所以不管是发送数据还是接收数据需要新开一个了线程: 以下代码是我点击发送是代码: new Thread(new Runnable() { @Ove ...
- 大数据中HBase的Java接口封装
该文前提为已经搭建好的HBase集群环境,参见 HBase集群搭建与配置 ,本文主要是用Java编写一个Servlet接口,部署在Tomcat服务器上,用于提供http的接口供其他地方调用,接口中集成 ...
随机推荐
- Git 如何回到过去,然后 再 回到将来
回到过去: git log 然后 git reset --hard commit ID (那段长长代码 40位) 再,回到将来git reflog 然后 git reset --hard 前面那个代码 ...
- [core java学习笔记][第十一章异常断言日志调试]
第11章 异常,断言,日志,调试 处理错误 捕获异常 使用异常机制的技巧 使用断言 日志 测试技巧 GUI程序排错技巧 使用调试器 11.1 处理错误 11.1.1异常分类 都继承自Throwable ...
- Javascript进阶篇——( JavaScript内置对象---下)--Math对象---笔记整理
Math对象使用 Math 的属性和方法: <script type="text/javascript"> var mypi=Math.PI; var myabs=Ma ...
- 表单元素-select
<form> <select size="2"> <option value="JMS HADEN">JMS HADEN&l ...
- poj1716 Integer Intervals(差分约束)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Integer Intervals Time Limit: 1000MS Me ...
- 【HTML5】在head 设置 meta 能更方便开发
<meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initi ...
- img元素高度多出来的几像素
HTML: <div class="test"><img src="body2.jpg" alt=""></d ...
- pubwin会员合并
此博文已移至爬不稳独立博客:www.pubwin2009.net连接:http://www.pubwin2009.net/index.php/post/15.html 我们说下过程(这里,我们要求两个 ...
- Integer和Integer数据的大小比较
public class Test{ public static void main(String[] args){ Integer i1 = 100; Integer i2 = 100; if(i1 ...
- 创建简单的ajax对象
oAjax= oAjax= oAjax.open('GET', url, ...