我的代码是这样的,我只是使用DynamoDB扫描,并将结果更改为JSON
var client = new AmazonDynamoDBClient();
var request = new ScanRequest
{
TableName = "wow_chat_msg",
};
var response = client.Scan(request);
var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(response.Items);
但之后返回的JSON是这样的:
[{\"Name\":{\"B\":null,\"BOOL\":false,\"IsBOOLSet\":false,\"BS\":[],\"L\":[],\"IsLSet\":false,\"M\":{},\"IsMSet\":false,\"N\":null,\"NS\":[],\"NULL\":false,\"S\":\"ABC\",\"SS\":[]},\"Type\":{\"B\":null,\"BOOL\":false,\"IsBOOLSet\":false,\"BS\":[],\"L\":[],\"IsLSet\":false,\"M\":{},\"IsMSet\":false,\"N\":null,\"NS\":[],\"NULL\":false,\"S\":\"CDE\",\"SS\":[]},\"msg_uid\":{\"B\":null,\"BOOL\":false,\"IsBOOLSet\":false,\"BS\":[],\"L\":[],\"IsLSet\":false,\"M\":{},\"IsMSet\":false,\"N\":\"1010\",\"NS\":[],\"NULL\":false,\"S\":null,\"SS\":[]},\"group_uid\":{\"B\":null,\"BOOL\":false,\"IsBOOLSet\":false,\"BS\":[],\"L\":[],\"IsLSet\":false,\"M\":{},\"IsMSet\":false,\"N\":\"1\",\"NS\":[],\"NULL\":false,\"S\":null,\"SS\":[]}},{\"Name\":{\"B\":null,\"BOOL\":false,\"IsBOOLSet\":false,\"BS\":[],\"L\":[],\"IsLSet\":false,\"M\":{},\"IsMSet\":false,\"N\":null,\"NS\":[],\"NULL\":false,\"S\":\"ABC\",\"SS\":[]},\"Type\":{\"B\":null,\"BOOL\":false,\"IsBOOLSet\":false,\"BS\":[],\"L\":[],\"IsLSet\":false,\"M\":{},\"IsMSet\":false,\"N\":null,\"NS\":[],\"NULL\":false,\"S\":\"CDE\",\"SS\":[]},\"msg_uid\":{\"B\":null,\"BOOL\":false,\"IsBOOLSet\":false,\"BS\":[],\"L\":[],\"IsLSet\":false,\"M\":{},\"IsMSet\":false,\"N\":\"3\",\"NS\":[],\"NULL\":false,\"S\":null,\"SS\":[]}},{\"Name\":{\"B\":null,\"BOOL\":false,\"IsBOOLSet\":false,\"BS\":[],\"L\":[],\"IsLSet\":false,\"M\":{},\"IsMSet\":false,\"N\":null,\"NS\":[],\"NULL\":false,\"S\":\"Chong\",\"SS\":[]},\"Type\":{\"B\":null,\"BOOL\":false,\"IsBOOLSet\":false,\"BS\":[],\"L\":[],\"IsLSet\":false,\"M\":{},\"IsMSet\":false,\"N\":null,\"NS\":[],\"NULL\":false,\"S\":\"Peter\",\"SS\":[]},\"msg_uid\":{\"B\":null,\"BOOL\":false,\"IsBOOLSet\":false,\"BS\":[],\"L\":[],\"IsLSet\":false,\"M\":{},\"IsMSet\":false,\"N\":\"2\",\"NS\":[],\"NULL\":false,\"S\":null,\"SS\":[]}},{\"Name\":{\"B\":null,\"BOOL\":false,\"IsBOOLSet\":false,\"BS\":[],\"L\":[],\"IsLSet\":false,\"M\":{},\"IsMSet\":false,\"N\":null,\"NS\":[],\"NULL\":false,\"S\":\"ABC\",\"SS\":[]},\"Type\":{\"B\":null,\"BOOL\":false,\"IsBOOLSet\":false,\"BS\":[],\"L\":[],\"IsLSet\":false,\"M\":{},\"IsMSet\":false,\"N\":null,\"NS\":[],\"NULL\":false,\"S\":\"CDE\",\"SS\":[]},\"msg_uid\":{\"B\":null,\"BOOL\":false,\"IsBOOLSet\":false,\"BS\":[],\"L\":[],\"IsLSet\":false,\"M\":{},\"IsMSet\":false,\"N\":\"1011\",\"NS\":[],\"NULL\":false,\"S\":null,\"SS\":[]}},{\"Name\":{\"B\":null,\"BOOL\":false,\"IsBOOLSet\":false,\"BS\":[],\"L\":[],\"IsLSet\":false,\"M\":{},\"IsMSet\":false,\"N\":null,\"NS\":[],\"NULL\":false,\"S\":\"Chan\",\"SS\":[]},\"Type\":{\"B\":null,\"BOOL\":false,\"IsBOOLSet\":false,\"BS\":[],\"L\":[],\"IsLSet\":false,\"M\":{},\"IsMSet\":false,\"N\":null,\"NS\":[],\"NULL\":false,\"S\":\"Rico\",\"SS\":[]},\"msg_uid\":{\"B\":null,\"BOOL\":false,\"IsBOOLSet\":false,\"BS\":[],\"L\":[],\"IsLSet\":false,\"M\":{},\"IsMSet\":false,\"N\":\"1\",\"NS\":[],\"NULL\":false,\"S\":null,\"SS\":[]}}]
转义字符是因为我将其更改为字符串。但我想问一下如何摆脱不必要的属性?就像我只想要json值中的“2”,但是有太多其他属性,如“S”,“SS”,“BOOL”......等我只想要一个漂亮的JSON。
请帮助,我搜索了很多文件,并希望寻求解决方案。
答案 0 :(得分:1)
我有一个返回漂亮JSON的解决方案。这用于Lambda函数。
public List<dynamic> GetDynamoData(string dynamoTableName, ILambdaContext context) {
Amazon.DynamoDBv2.AmazonDynamoDBConfig amazonDynamoDBConfig = new Amazon.DynamoDBv2.AmazonDynamoDBConfig { RegionEndpoint = RegionEndpoint.XWZ};
Amazon.DynamoDBv2.AmazonDynamoDBClient client = new Amazon.DynamoDBv2.AmazonDynamoDBClient(amazonDynamoDBConfig);
Table myTable = Table.LoadTable(client,dynamoTableName);
ScanFilter scanFilter = new ScanFilter();
scanFilter.AddCondition("IDCOLULM", ScanOperator.GreaterThan, 123465); //Whatever your filter is
Search search = myTable.Scan(scanFilter);
List<dynamic> results = new List<dynamic>();
do
{
var docList = search.GetNextSetAsync();
docList.Result.ForEach(doc=> {
dynamic x = Newtonsoft.Json.JsonConvert.DeserializeObject(doc.ToJson());
results.Add(x);
});
} while (!search.IsDone);
return results;
}
答案 1 :(得分:0)
刚刚找到答案。
使用DynamoDB的低级api将返回大量不必要的数据以用于低级别使用。所以我们可以使用高级文档模型。
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ScanMidLevelDotNet.html
使用Table.scan,然后使用您自己的方法组合Document ofToJSON(),这里我使用ArrayList来组合它们。
然后在我获得Object列表后,返回客户端。一切都很美好。