こんにちは、Javascriptを使用して、次のコードを使用してキーと値を持つオブジェクトの配列を作成しています。
ValuesArray.Push({ key: $(this).attr('someattribute'), value: $(this).val() });
結果として、私はこのようなオブジェクトの配列を持っています:
key:29; value: 'Country'
Key:12; value: '4,3,5'
私はそれを文字列化し、そのJSONを投稿で送信しようとすると、\と "で間違ったフォーマットのJSONを持っています。stringifyを使用してクリーンなJSONを作成するにはどうすればよいですか
var jObject = JSON.stringify(ValuesArray);
間違っている私のJSONは次のとおりです:
{
"JObject": "[{\"key\":\"29\",\"value\":\"Country\"}, {\"key\":\"30\",\"value\":\"4,3,5\"}]"
}
このようなJSONオブジェクトが欲しい
{
"JObject": [{"key":"29","value":"Country"},{"key":"30","value":"4,3,5"}]
}
[]
と文字\
を引用符なしで
それを解決するための良いアイデア。
ありがとうございました
JSONをAPIに送信する方法の詳細は、JSONをWeb APIに送信する方法です。
function PostAPIRequest(address) {
var jObject = JSON.stringify(ValuesArray);
var responseJson = null;
$.ajax({
url: address,
type: 'POST',
dataType: 'json',
data: { JObject: jObject },
success: function (data) {
responseJson = data
ProcessDataResponse(responseJson);
//TODO: REFRESH THE DATA GRID
},
error: function (xhr, ajaxOptions, thrownError) {
//TODO redirect to the error page and send error email there.
alert(xhr.status);
alert(thrownError);
}
})
}
そして、これはAPIコントローラーでどのように受け取っているのですか
...
// POST api/datavalues/5
public string Post(int id, JObject value)
{
var temp = value;
...
マップに値として文字列を配置しているようです。次のようなことを行う必要があります。
_var objMap = {"JObject" : ValuesArray};
_ var json = JSON.stringify(objMap)
何が起こっているのですか?あなたは値配列をダブルjsonエンコードしています-あなたの「無効な」JSON値は実際にはあなたが望む配列ではなくJSON文字列であることに注意してください。
[〜#〜] edit [〜#〜]JSONのマップ文字列を配列に貼り付け、それを文字列化するようです。探しているものを取得するのに役立つjsfiddleを次に示します- http://jsfiddle.net/4G5nF/
投稿リクエストで、これを試してください
_var jObject = {"JObject" : ValuesArray};
$.ajax({ url: address,
type: 'POST',
dataType: 'json',
data: jObject,
success: function (data) { .. }});
_
データ属性の変更に注意してください。これは、自動的にJSON化される値です。
const config = {a: 1, b: 2}
console.log(JSON.stringify(JSON.stringify(config)))
"{\" a\":1、\" b\":2}"
古いprototype
ライブラリがあるかもしれません。削除すると、バグが消えました