我有一个带有以下内容的XYZ.Json文件。
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
使用以下代码,我尝试从此Json读取并返回JObject,但在json结构的开头和结尾处添加了额外的花括号。
{
"ABC": "Account",
"CDE": "Balance",
"EFG": "Enquiry"
}
obj1:
JObject obj1 = JObject.Parse(System.IO.File.ReadAllText(@".\XYZ\install\XYZ.json));
我已经尝试过option,转换了{{
"ABC": "Account",
"CDE": "Balance",
"EFG": "Enquiry"
}}
,但是没有用。
也尝试过此代码,但仍然看到相同的问题。
Jobject.Tostring()
obj3:
Dictionary<string, string> dict = new Dictionary<string, string>();
JObject obj = JObject.Parse(System.IO.File.ReadAllText(@".\XYZ\install\XYZ.json));
foreach (JProperty prop in obj.Properties())
{
dict.Add(prop.Name, obj.GetValue(prop.Name).ToObject<string>());
};
JObject obj3 = JObject.Parse(JsonConvert.SerializeObject(dict));
请提出其他解决方案。
答案 0 :(得分:0)
,您必须先将字典转换为json格式
JObject obj = JObject.Parse(File.ReadAllText(@"C:\temp\test.txt"));
Dictionary<string, string> dict = new Dictionary<string, string>();
foreach (JProperty prop in obj.Properties())
{
dict.Add(prop.Name, obj.GetValue(prop.Name).ToObject<string>());
};
var entries = dict.Select(d => string.Format($@"""{d.Key}"": ""{d.Value}"""));
string convertedString = "{" + string.Join(",", entries) + "}";
JObject obj3 = JObject.Parse(convertedString);
obj3将为您提供与obj相同的对象。
双曲括号是Json对象的内部代表。您不能删除双括号,因为这就是JSON在JObject中的表示方式。在上面的代码中,从Json到Dictionary的转换然后再回到Json的工作是正确的。
obj和obj3变量都如下所示。
注意:您的示例仅适用于string:string json ..如果您使用strin:object,则此方法将无效。