By JSON text,我的意思是JSON.stringify的返回值。我知道如何做到這一點與JSON對象,但我不知道如何用JSON 文本(添加新屬性/元素,說「sn」:「1」到JSON 文本,但它的結構被保留,我不需要再次將其串起來),任何人都可以幫助我嗎?我該如何將新屬性添加到JavaScript中的JSON字符串中?
謝謝!
By JSON text,我的意思是JSON.stringify的返回值。我知道如何做到這一點與JSON對象,但我不知道如何用JSON 文本(添加新屬性/元素,說「sn」:「1」到JSON 文本,但它的結構被保留,我不需要再次將其串起來),任何人都可以幫助我嗎?我該如何將新屬性添加到JavaScript中的JSON字符串中?
謝謝!
按照你建議的方式來做它沒有任何意義......只要將它重新轉換成一個對象,添加你的領域並再次將其串聯起來!或者我錯過了什麼?
你將不得不以某種方式解析它。最直接的方法可能是將其解壓縮爲object/array/literal數據。但是,如果您不想這樣做,則可以使用regular expressions或String
對象的方法(如substr)直接操作字符串。
我不知道你爲什麼想要這樣做 - 爲什麼不只是在之前添加屬性然後你將其加密?
但是,如果你一定要,因爲包含JSON字符串:
var myJSON = '{"prop1":"val1","prop2":"val2"}';
您可以輕鬆地通過這樣一個屬性添加到開頭:
myJSON = '{' + '"sn":"1",' + myJSON.substr(1);
或添加到末尾:
myJSON = myJSON.replace(/}$/, ',"sn":"1"' + '}');
或者使用任何的String操作功能的其他組合發生喲烏爾看中...
如果你想在字符串中的特定位置添加新的特性,比如一個嵌套的對象或數組或東西在裏面,好了,再次某種.indexOf()
和.substr()
什麼的正則表達式或組合可以做到這一點,但是我認爲這樣做很困難。
顯然上面的代碼可以封裝在一個函數中,並且'"sn":"1"'
可以用參數或變量名稱或者其他替換 - 但是爲什麼?
請注意,我已經假設上面至少會有一個現有屬性,並相應地插入一個逗號,如果您想允許空對象,則可以更智能化。
P.S.沒有「JSON字符串」和「JSON對象」:全部 JSON是一個字符串。在JavaScript中,創建對象的一種方式是使用啓發JSON的對象字面值語法,但沒有像JSON對象那樣的東西。
對不起,我沒有指出我想這樣做的原因。問題是我需要在向它添加新的屬性/元素之前找出JSON文本的長度。但是...正如你指出的,我仍然可以stringfy - >獲取長度 - > de-stringfy - 添加一個新的屬性/元素 - > stringfy它。非常感謝! –
在這種情況下,您不需要去弦:您仍然獲得對原始對象的引用,因此只需再次添加屬性並進行字符串化即可。 – nnnnnn
爲什麼你不能解壓縮JSON,更新它,然後再次對它進行字符串處理? –
任何字符串操作函數就足夠了。 –
這個問題可能不是最佳實踐,但它是一個合理的問題,我認爲不值得贊成。 – ryandlf