标签: stringify

与IE8一起使用KnockoutJS,偶尔出现Stringify问题?

我们的一些用户仍然使用IE8.当尝试将数据发布到我们的服务器时,他们中的一些偶尔会报告问题(通过标记为"SAVE"的大按钮).

IE8显示的脚本错误是:意外调用方法或属性访问,始终指向KnockoutJS 2.2.0(现在调试)库450行中的同一行,如下所示:

return JSON.stringify(ko.utils.unwrapObservable(data), replacer, space);
Run Code Online (Sandbox Code Playgroud)

我的代码中的方法位于堆栈跟踪的根部,发生这种情况的方法如下:

self.saveSingle = function (onSuccess, onFailure) {
        ko.utils.arrayForEach(self.days(), function (day) {
            day.close();
        });
        var jsonData = ko.toJSON(self);
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: applicationLocation + "/api/assignmentapi/save",
            data: jsonData,
            success: function (data) {
                self.status(data.Status);
                self._isDirty(false);
                ko.utils.arrayForEach(self.days(), function (day) {
                    day.clean();
                });
                if (onSuccess)
                    onSuccess();
            },
            error: function (data) {
                onFailure();
            },
            dataType: "json"
        });
    };
Run Code Online (Sandbox Code Playgroud)

当我们将对象转换为JSON时,我们会删除一些对POST不必要的属性,使用这种方法:http://www.knockmeout.net/2011/04/controlling-how-object-is-converted -to.html

OurType.prototype.toJSON = function () {
    var copy = ko.toJS(this);

    delete copy.someUnneededProperty1; …
Run Code Online (Sandbox Code Playgroud)

internet-explorer-8 stringify knockout.js

6
推荐指数
1
解决办法
1863
查看次数

JSON 字符串化对象,其中 json 字符串已经作为值

可能是重复的问题,但找不到答案。我想将包含一些 JSON 字符串作为值的 javascript 对象字符串化。

例如:

var obj = {id:1, options:"{\"code\":3,\"type\":\"AES\"}"};
Run Code Online (Sandbox Code Playgroud)

如您所见,键 'options' 的值是一个 JSON 字符串。我想对对象“obj”进行字符串化,而不对内部 JSON 字符串进行双重字符串化。

除了使用 JSON 字符串解析每个值并将对象字符串化之外,是否有任何干净整洁的解决方案?

javascript parsing json object stringify

6
推荐指数
1
解决办法
4032
查看次数

当我不关心字典的类型时,如何将字典作为参数传递?

与此问题类似:

将Dictionary <string,string>转换为单个聚合字符串表示的最佳方法?

但是我想忽略Dictionary中的类型,因为我打算调用每个键和值的ToString()方法.

我认为它不应该是一个问题,但我无法弄清楚如何传入一个无类型的字典,而不仅仅是把它作为对象...任何想法?

[编辑]添加工作代码片段:这是有效的 - 感谢twoflower

public string DumpDictionary<TKey, TElement>(IDictionary<TKey, TElement> dictionary)
{
      StringBuilder sb = new StringBuilder();
      foreach (var v in dictionary)
      {
           sb.AppendLine(v.Key.ToString() + ":" + v.Value.ToString());
      }
      return sb.ToString();
 }
Run Code Online (Sandbox Code Playgroud)

c# dictionary stringify

5
推荐指数
1
解决办法
6478
查看次数

使用javascript对多维数组进行字符串化

我正在为书籍创建发票,并希望通过ajax提交.我试图json编码发票中的书籍数组,但我一直得到一个空白值

 //create item list
    var order_items = [];
    $('#mi_books tbody tr.userbooks').each(function(index)
    {
        var bookisbn = $(this).find('td .mi_isbn').text();

        var bookdata = [];
        bookdata['isbn'] = bookisbn;
        bookdata['title'] = $(this).find('.mi_title').text();
        bookdata['qty'] = $(this).find('.mi_qty').text();
        bookdata['price'] = $(this).find('.mi_price').text();

        order_items.push(bookdata);

    });
    alert(JSON.stringify(order_items));
    alert(order_items.toString());
    console.log(order_items);
Run Code Online (Sandbox Code Playgroud)

alert(JSON.stringify(order_items));
输出: [[]]

alert(order_items.toString());
输出: blank

console.log(order_items);
输出:

Array[1]
0: Array[0]
isbn: "9781401216672"
length: 0
price: "1007"
qty: "1"
title: "Batman: The Killing Joke"
__proto__: Array[0]
length: 1
__proto__: Array[0]
Run Code Online (Sandbox Code Playgroud)

我的数组正在创建,但不知怎的,我似乎无法对json进行编码?难道我做错了什么?

javascript jquery json stringify web

5
推荐指数
1
解决办法
3923
查看次数

如何在不使用“JSON.stringify”方法的情况下将 javascript 对象转换为 json?

有什么方法可以将 javascript 对象转换为 JSON。

我不能用

JSON.stringify(<obj>)

因为下面链接中的 JSON 对象中没有 stringify 方法。

关联

例子:

var obj = {'x':1,'y':2}
Run Code Online (Sandbox Code Playgroud)

现在如果我跑

console.log(JSON.stringify(obj));
Run Code Online (Sandbox Code Playgroud)

然后我收到这个错误。

错误:类型错误:对象 # 没有方法 'stringify'

javascript json stringify

5
推荐指数
1
解决办法
4229
查看次数

JSON stringify 正在添加反斜杠

当字符串化的字符串被直接发送到请求时,它不会被添加任何斜杠。

    var data = { "A": "Aa", "B": "Bb", "C": "Cc" }; // This is JSON object
        data = JSON.stringify(data); // Getting stringified
    var obj = {method: "POST", 
               url: 'http://..XX..XXX.....com',
               data: data // String is being sent as it is
              };
   $http(obj);// Have no slashes added
//Output: {"A":"Aa","B":"Bb","C":"Cc"}
Run Code Online (Sandbox Code Playgroud)

但是,如果将字符串化的字符串设置为对象的属性并将对象发送到服务器,则该字符串带有反斜杠。

        var data = { "A": "Aa", "B": "Bb", "C": "Cc" };
            data = JSON.stringify(data);
        var obj  = {method: "POST", 
                   url: 'XXX',
                   data: { // String is being sent as a value …
Run Code Online (Sandbox Code Playgroud)

javascript json stringify angularjs

5
推荐指数
1
解决办法
8275
查看次数

JavaScript:将循环引用对象的浅拷贝字符串化?

有没有办法让下面的浅拷贝只得到一层深?我有一种使用完全不同的设计来解决这个问题的方法,但我想知道是否有其他人遇到过我之前尝试转换为字符串的问题。

var SomeObjClass = function() {
    var self = this;
    this.group = {
        members: [self]
    };
};
var p = new SomeObjClass();
var str = JSON.stringify(p);
Run Code Online (Sandbox Code Playgroud)

javascript json stringify

5
推荐指数
1
解决办法
1522
查看次数

javaScript:使用JSON.parse解析字符串化对象会删除引用

我试图深度克隆一个对象,用k = JSON.parse(JSON.stringify(a))说"a".我使用stringify方式很重要,因为我试图将对象保存到文件中然后从中加载.

我偶然发现了克隆对象的引用问题,如下所示:

var obj={};
obj.importantProperty={s:2};
obj.c=obj.importantProperty;
obj.d=obj.importantProperty;
console.log( obj.c === obj.d ); // Returns true

var cloned = JSON.parse(JSON.stringify(obj));
console.log( cloned.c === cloned.d ); // Returns false
Run Code Online (Sandbox Code Playgroud)
我需要在使用JSON.parse时保留引用,在上面的示例中它们不是.在我的项目中,对象要复杂得多,但最后归结为上面的例子.

在此先感谢任何帮助我的人:)

javascript parsing json stringify

5
推荐指数
1
解决办法
947
查看次数

字符串化时的 ArrayBuffer 变为空对象

在我的应用程序中,我使用 FileReader 上传文件并将其解析为ArrayBuffer. 文件属性保存在一个对象中,结构如下:

file: {
    name: 'fileName', // type string
    content: ArrayBuffer // read like  FileReader.readAsArrayBuffer(uploadedFile)
}
Run Code Online (Sandbox Code Playgroud)

当我想将文件保存到后端时,我正在使用 axios,并发送这样的请求:

axios({
    url: "/api/v3/synchronous/commands",
    method: "POST",
    data: JSON.stringify(file),
    headers,
})
Run Code Online (Sandbox Code Playgroud)

问题是当它被字符串化时,content里面的文件变成了一个空对象{}。如何解决此问题,而不必转换ArrayBuffer为其他内容,然后再将其转换回ArrayBuffer?

javascript json arraybuffer stringify

5
推荐指数
0
解决办法
1887
查看次数

JSON stringify 和 PostgreSQL bigint 合规性

我正在尝试BigInt在我的库中添加支持,但遇到了JSON.stringify.

库的性质允许不必担心类型歧义和反序列化,因为序列化的所有内容都会进入服务器,并且永远不需要任何反序列化。

我最初想出了以下简化的方法,只是为了抵消 Node.js 向TypeError: Do not know how to serialize a BigInt我抛出的问题:

// Does JSON.stringify, with support for BigInt:
function toJson(data) {
    return JSON.stringify(data, (_, v) => typeof v === 'bigint' ? v.toString() : v);
}
Run Code Online (Sandbox Code Playgroud)

但是由于它将BigInt每个值都转换为字符串,因此每个值最终都被包裹在双引号中。

是否有任何解决方法,也许是 Node.js 格式化实用程序中的一些技巧,以从JSON.stringify每个BigInt将被格式化为开放值的地方产生结果?这是 PostgreSQL 理解和支持的内容,因此我正在寻找一种方法来生成BigInt符合 PostgreSQL 的JSON 。

例子

const obj = {
    value: 123n
};

console.log(toJson(obj));

// This is what I'm getting: {"value":"123"}
// This is …
Run Code Online (Sandbox Code Playgroud)

postgresql bigint node.js stringify

5
推荐指数
1
解决办法
3123
查看次数