我有一个变量名状态,如何将其转换为JSON对象并更改其值,然后再将其转换回字符串。
注意::private void CheckForUserType()
{
var user = RetrieveSession();
}
private object RetrieveSession()
{
var userInfo =(UserInfo)HttpContext.Current.Session["userInfo"];
return userInfo;
}
值本身是另一个dataField
,这就是我遇到问题的地方。
JSON
答案 0 :(得分:2)
您可以使用JSON.parse()进行转换
var obj = JSON.parse(state);
然后您修改所需内容:
obj.dataField.name = "newName";
最后,您将字符串恢复为状态:
state = JSON.stringify(obj);
答案 1 :(得分:0)
JSON.parse()可用于将字符串转换为JSON
var obj = JSON.parse('{“名称”:“约翰”,“年龄”:30,“城市”:“纽约”}');
JSON.stringify()可用于将JSON转换回字符串
var myJSON = JSON.stringify(obj);
答案 2 :(得分:0)
您可以使用JSON
函数中的内部版本。我还修复了您的JSON字符串。您可以用不需要的引号将"dataField"
值引起来。应该是{"id":52, "name":"CropSelection"}
而不是"{"id":52, "name":"CropSelection"}"
。
var state = '{"instanceId":"iaFMRu32kedGmOHC8umMQ","dataField":{"id":52, "name":"CropSelection"},"validation":"incomplete","required":true,"value":"","hasValue":false,"requiresSave":true}';
var obj = JSON.parse(state);
obj.dataField.name = 'newName';
console.log(JSON.stringify(obj));
答案 3 :(得分:0)
您可以执行JSON.parse
将字符串转换为json,然后更新dataField的值,然后再次执行JSON.stringify
请注意,在字符串"dataField":"{"id":52,"name":"CropSelection"}"
中,这是错误的,必须为"dataField":{"id":52,"name":"CropSelection"}
。
let newDT = {
"id": 100,
"name": "test"
}
let state = '{"instanceId":"iaFMRu32kedGmOHC8umMQ","dataField":{"id":52,"name":"CropSelection"},"validation":"incomplete","required":true,"value":"","hasValue":false,"requiresSave":true}';
let k = JSON.parse(state);
k.dataField = newDT
console.log(JSON.stringify(k))
答案 4 :(得分:0)
发布此答案,以防万一您不正确地发布json,并且dataField的值确实是包含json的嵌套字符串。如果是这样,您可以解析状态,然后解析dataField。更改已解析的数据字段,然后将其递增地转换回字符串。
var state = '{"instanceId":"iaFMRu32kedGmOHC8umMQ","dataField":"{\\"id\\":52,\\"name\\":\\"CropSelection\\"}","validation":"incomplete","required":true,"value":"","hasValue":false,"requiresSave":true}';
var parsedState = JSON.parse(state);
console.log( parsedState );
var parsedDataField = JSON.parse( parsedState.dataField );
console.log( JSON.parse( parsedState.dataField ) );
parsedDataField.name = "New Name";
parsedState.dataField = JSON.stringify( parsedDataField );
state = JSON.stringify( parsedState );
console.log( state );