这听起来真的是贫民窟,但我需要将一些 Javascript 打印到浏览器屏幕上,以便可以将其剪切并粘贴到另一个程序中。
但是,我使用的是JSON.stringify()from json2.js,它不会转义字符,例如引号和换行符 (",\n),它们实际上是 JSON 对象的控制部分,需要进行转义。
例如,我会得到这样的字符串,在导入到其他程序时会导致问题:
{
string_property_01 : "He said "HI""; // The string terminates after "He said "
}
Run Code Online (Sandbox Code Playgroud)
是否有任何库可以用来转义我需要在这里转义的所有字符?
谢谢!
我有这个对象 [Dictionary< String: Any>]
[{
"addCity" : "Xyz",
"addLandmark" : "Shopper",
"addCountry" : "Abc",
"addPincode" : "122001",
"isPrimary" : "false",
"addAddress" : "S44",
"addState" : "abc",
"addAddress2" : "Grand Road",
"addContact" : "11111111",
"addName" : "John"
}]
Run Code Online (Sandbox Code Playgroud)
并希望将其转换为:
"{\"addAddress\":\"S44\",\"addAddress2\":\"Grand Road\",\"addCity\":\"Xyz\",\"addContact\":\"11111111\",\"addCountry\":\"abc\",\"addLandmark\":\"Shopper\",\"addName\":\" John\",\"addPincode\":\"122002\",\"addState\":\"abc\",\"isPrimary\":true}"
Run Code Online (Sandbox Code Playgroud)
意味着我必须对上述值进行字符串化并尝试了各种方法但没有找到任何解决方案。
我试过这个
do {
let arrJson = try JSONSerialization.data(withJSONObject: dataAddress, options: JSONSerialization.WritingOptions.prettyPrinted)
let string = String(data: arrJson, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue))
let tempJson = string! as String
print("%%%%%%",tempJson)
}catch let error as NSError{
print(error.description)
}
Run Code Online (Sandbox Code Playgroud)
但它只是以 JSON 形式返回相同的内容。
请任何人都可以帮助我。
我正在向我的 django 模板提供对象列表。我有一个条件,我正在访问模板中的对象字段之一,它是一个包含u'类似字符的 json 字段{u'option': False, u'name': u'test string'}
我们通常在 python 中使用 json.dumps 将其转换为{"option": False, "name": "test string"},这是我想要的正确 json,因为我需要在我的 javascript 中访问这样的字符串。
有没有一种简单的方法可以在 javascript 中做到这一点?我想避免使用正则表达式剥离u' and '并替换为"
对不起,如果这是非常基本的。不太了解javascript。
或者有没有办法从python以某种方式将我的对象字段编码为to_json?
嘿,我有一个像这样的数组对象
[{
public: "public",
private: "private",
[{
properties: {...
},
instance: {.....
}
}, {...
}, {...
}]
}, {...
}, {....
}]
Run Code Online (Sandbox Code Playgroud)
在这里,最外面的数组包含类A的对象,该对象具有一些公共道具,一些私有对象,并且还包含一个包含类B的对象的数组,该对象还包含一些公共字段和私有字段。
所以基本上这是我的等级制度
array = [A1,A2,A3,A4,....]//object of A
var A = function(){
var Const = function(){
this.public_prop;
this.private_prop;
this.list = [B1,B2,B3,B4]// objects of B
}
//.........
return Const;
}();
var B = function(){
var Const = function(){
this.public_prop;
this.private_prop;
}
//.........
return Const;
}();
Run Code Online (Sandbox Code Playgroud)
现在在进行字符串化(序列化)时,我只想在序列化字符串中包含public prop和数组。
例如对于上述JSON表示,我想要这样的东西
[{
public: "public",
[{
properties: {...
}
}, {...
}, {... …Run Code Online (Sandbox Code Playgroud) 使用 JSON.Stringify 我在另一个 Stringify 对象中传递以下字符串。
[
[
"I-000-4310-000",
"Convention Registration",
"59.99"
],
[
"I-000-4311-000",
"Convention Breakout",
"39.99"
]
]
Run Code Online (Sandbox Code Playgroud)
在我的 C# web 服务中,我需要将字符串拆分成一个如下所示的字符串数组:
string[, ,] GLCodes = new string[,,]
{
{
{ "I-000-4310-000", "Convention Registration", "59.99" },
{ "I-000-4311-000", "Convention Breakout", "9.99" }
}
};
Run Code Online (Sandbox Code Playgroud)
什么是最简单的方法来做到这一点?
为什么 stringify 的输出缺少百分号?
var a = ["dp",'%%'];
var t = JSON.stringify (a);
console.log ('t: ' + t);
Run Code Online (Sandbox Code Playgroud)
结果是:
t: ["dp","%"]
Run Code Online (Sandbox Code Playgroud)
为什么不是结果:
t: ["dp","%%"]
Run Code Online (Sandbox Code Playgroud)
谢谢!
FireFox 46.0.1:我使用 3rd-party (easyrtc) 软件在对等点之间发送 15KB 的 Float32Arrays 块。Easyrtc 坚持认为数据是 JSON 格式的。不幸的是,JSON.stringify 生成的字符串是原始数据的两倍多:16384 字节的数据变成了长度为 35755 的字符串。下面是我的测试代码,后面是控制台输出。如果我能做些什么来减少字符串化的大小呢?有没有办法只发送值(没有键)?我可以使用'replacer' 参数只发送值吗,如果是这样,我不需要在接收端的相应 JSON.parse 上使用替换器吗?
var g_testBufferNBytes = 4096 * 4;
var g_testBuffer = new ArrayBuffer(g_testBufferNBytes);
var g_testBufferView = new Float32Array(g_testBuffer);
console.log("array byte length " + g_testBuffer.byteLength);
console.log("view byte length " + g_testBufferView.byteLength);
var j = JSON.stringify(g_testBufferView);
console.log("j length " + j.length);
var newBuf = JSON.parse(j);
console.log("newBuf length " + Object.keys(newBuf).length);
Run Code Online (Sandbox Code Playgroud)
CONSOLE: 数组字节长度 16384 查看字节长度 16384 j 长度 35755 newBuf 长度 4096
我有一个对象,即:
{
item1: "value1",
item2: "value2",
item3: {
item4: "value4",
item5: "value5"
}
}
Run Code Online (Sandbox Code Playgroud)
我想JSON.stringify与一个replacer函数一起使用,该函数对 item3 的内部属性4 和 5 有不同的作用。
那怎么办?
类似于以下伪代码:
return JSON.stringify(obj, (key, val) => {
if (key is child of Item3) {
return someOtherValue;
} else {
return val;
}
}
Run Code Online (Sandbox Code Playgroud)
所需的输出是 json。IE:
{
"item1" : "value1",
"item2" : "value2",
"item3" : {
"item4" : "theSomeOtherValue",
"item5" : "theSomeOtherValue"
}
Run Code Online (Sandbox Code Playgroud)
编辑:
项目 4 和 5 事先未知,它们是动态生成的。
我只知道item3运行时的标题
当尝试使用JSON.stringify()方法将字符串数组转换为可以传递给PHP脚本的JSON对象时,该stringify()方法无法返回任何重要的内容.
这是输入传递的唯一代码.它没有被其他任何东西篡改.
function submitItem() {
try {
var item = [];
item.name = $('.itemText').val();
item.type = $('.itemType').val();
item.price = $('.itemPrice').val();
item.color = $('.itemColor').val();
item.desc = $('.itemDesc').val();
item.image = $('.itemImage').val();
item.giftType = $('.itemGiftType').val();
item.avail = $('.itemAvail').val();
item.giftable = $('.itemGiftable').val();
item.ranking = $('.itemRanking').val();
item.basicTrack = $('.itemBasic').val();
item.vetTrack = $('.itemVet').val();
item.month = $('.itemMonth').is(':checked');
item.hidden = $('.itemHidden').is(':checked');
item.id = $('.itemID').val();
//Left in for confirmation purposes
var join = [];
join[0] = 'test';
join[1] = 'tset';
console.log( JSON.stringify( join ) ); …Run Code Online (Sandbox Code Playgroud) 我们正在根据一种简单的模板格式构建动态JSON有效负载,该格式指示我们的有效负载应生成多少个级别,例如“ level1.level2”>将生成:
{
"level1": [
{
"level2": [
{
"someData": "willGoHere",
},
{
"someOtherData": "willAlsoGoHere"
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
显然,我们正在使用不同的命名结构,例如:“ client.ipcEvent.level3”,在某些情况下,我们正在测试4个级别。我们正在做错事情〜我们能够构建我们的javascript对象,但是无法使用stringify()创建完整结果,因为由于某些奇怪的原因,针对我们对象的stringify()仅返回第一级数据:
{ "level1": [] }
Run Code Online (Sandbox Code Playgroud)
。
我试过改变对象加载值的方式,但是所有这些都回到stringify()'删除'没有相同级别的伴随属性/属性值的数组值。