C# 如何将json字符串转换为键\值对?
我想在“instanceData”下的\“标记\”之后获取所有键值对,并在“属性”下生成键值对 我有这个C# 如何将json字符串转换为键\值对?,c#,.net,json,azure-billing-api,C#,.net,Json,Azure Billing Api,我想在“instanceData”下的\“标记\”之后获取所有键值对,并在“属性”下生成键值对 我有这个 { "id": "/subscriptions/1234abcd-ab12-12ab-12ab-abcdfghi1234/Daily_BRSDT_20161214_0000", "name": "Daily_BRSDT_20161214_0000", "type": "Microsoft.Commerce/UsageAggregate", "properties": {
{
"id": "/subscriptions/1234abcd-ab12-12ab-12ab-abcdfghi1234/Daily_BRSDT_20161214_0000",
"name": "Daily_BRSDT_20161214_0000",
"type": "Microsoft.Commerce/UsageAggregate",
"properties": {
"subscriptionId": "1234abcd-ab12-12ab-12ab-abcdfghi1234",
"usageStartTime": "2017-03-08T00:00:00+00:00",
"usageEndTime": "2017-03-09T00:00:00+00:00",
"meterName": "Standard IO - File Read Operation Units (in 10,000s)",
"meterCategory": "Data Management",
"unit": "10,000s",
"instanceData": "{\"Microsoft.Resources\":{\"resourceUri\":\"/subscriptions/1234abcd-ab12-12ab-12ab-abcdfghi1234/resourceGroups/default-resource-group67/providers/Microsoft.Storage/storageAccounts/defaultstorage67\",\"location\":\"ussouthcentral\",\"tags\":{\"ProjectName\":\"default Portal\",\"billTo\":\"Technology\",\"component\":\"Persistant Storage\",\"department\":\"Technology\",\"displayName\":\"default Portal Storage Account\",\"enviornment\":\"default\",\"function\":\"Reporting\",\"matterNumber\":\"999999\",\"primaryowner\":\"john@internet.com\",\"productLine\":\"Information Components\",\"secondaryowner\":\"mary@internet.com\",\"version\":\"1.0.0.0\"}}}",
"meterId": "12345ab-259d-4206-a6ae-12345678abcd",
"infoFields": {},
"quantity": 0.0004
}
}
我想要这个
{
"id": "/subscriptions/1234abcd-ab12-12ab-12ab-abcdfghi1234/Daily_BRSDT_20161214_0000",
"name": "Daily_BRSDT_20161214_0000",
"type": "Microsoft.Commerce/UsageAggregate",
"properties": {
"subscriptionId": "1234abcd-ab12-12ab-12ab-abcdfghi1234",
"usageStartTime": "2017-03-08T00:00:00+00:00",
"usageEndTime": "2017-03-09T00:00:00+00:00",
"meterName": "Standard IO - File Read Operation Units (in 10,000s)",
"meterCategory": "Data Management",
"unit": "10,000s",
"instanceData": "{\"Microsoft.Resources\":{\"resourceUri\":\"/subscriptions/1234abcd-ab12-12ab-12ab-abcdfghi1234/resourceGroups/default-resource-group67/providers/Microsoft.Storage/storageAccounts/defaultstorage67\",\"location\":\"ussouthcentral\"}}",
"ProjectName":"default Portal",
"billTo":"Technology",
"component":"Persistant Storage",
"department":"Technology",
"displayName":"default Portal Storage Account",
"enviornment":"default",
"function":"Reporting",
"matterNumber":"999999",
"primaryowner":"john@internet.com",
"productLine":"Information Components",
"secondaryowner":"mary@internet.com",
"version":"1.0.0.0",
"meterId": "12345ab-259d-4206-a6ae-12345678abcd",
"infoFields": {},
"quantity": 0.0004
}
}
有没有一个简单的方法来转换这个?我正试图用正则表达式来做这件事,但运气不好。我建议您看看这样的东西: 实际上,您需要去掉要解析的一个键,并将其重新添加到JSON对象中 NET-Newtonsoft的工具非常适合使用Json。 最简单的方法:
列表。
这是一种简单的方法,但不是最有效的方法 用正则表达式?听起来像是噩梦。不要那样做。什么语言?bash、php、java?一定有比regexI更多的东西,我正在用C#编写库,使用Azure资源使用API。。。您需要将json反序列化为它的对象表示形式,或
动态
。然后在“标记”下获取值,并将它们添加到“属性”下的父项中。使用Json.NET,它将使这变得更容易。