问题描述:
使用LitJson库的过程中,写了这段代码:
LitJson.JsonData jsonData = new LitJson.JsonData();
jsonData[NetConst.ACTION] = "009010301";
jsonData[NetConst.BONE_NAME] = "00901,00902";
jsonData[NetConst.SPEED] = 0.5;
jsonData[NetConst.UNIQUE_ID] = "12345";
LitJson.JsonData jsonData1 = new LitJson.JsonData();
jsonData1[NetConst.ACTION] = "004010101";
jsonData1[NetConst.BONE_NAME] = "04001,04101";
jsonData1[NetConst.SPEED] = 0.5;
jsonData1[NetConst.UNIQUE_ID] = "12543";
LitJson.JsonData jsonArray = new LitJson.JsonData
{
jsonData,
jsonData1
};
LitJson.JsonData finalData = new LitJson.JsonData();
finalData[NetConst.ACTIONS] = jsonArray.ToJson();
finalData[NetConst.INTENTION] = NetConst.APPEND;
string message = NetConst.MODULE_ACTION + "&&" + finalData.ToJson();
Logger.i(message);
本来期待的字符是:
{"actions":[{"action":"009010301","boneName":"00901,00902","speed":0.5,"uniqueId":"12345"},{"action":"004010101","boneName":"04001,04101","speed":0.5,"uniqueId":"12543"}],"intention":"append"}
结果字符是:
{"actions":"[{\"action\":\"009010301\",\"boneName\":\"00901,00902\",\"speed\":0.5,\"uniqueId\":\"12345\"},{\"action\":\"004010101\",\"boneName\":\"04001,04101\",\"speed\":0.5,\"uniqueId\":\"12543\"}]","intention":"append"}
json数组里添加了转义。
分析是因为这句代码:
finalData[NetConst.ACTIONS] = jsonArray.ToJson();
之所以写这句,是把NetConst.ACTIONS 字段,直接设置成字符串,后来发现可以直接把数组对象jsonArray赋值给他就行了。
总结下:如果调用ToJson()方法,会对字符串里的特殊字符进行一次转义。