【发布时间】:2019-01-06 14:42:25
【问题描述】:
JsonConvert.DeserializeObject<Language>(json) 返回属性为空的对象。我想填充 lang 对象,它应该有一些属性,例如名为“IncreaseIndent”的字符串列表等。
Indentor.json
{"VBA":[
{ "IncreaseIndent":["Public Sub *","Public Function *","If *then","While *","Do","Do while *","For *","With *","Select Case *","Sub *","Function *","* Type *","Private Sub *","Private Function *","* Enum *"]},
{ "DecreaseIndent":["End Sub","End Function","End if","Wend","Loop While *","Loop","Next","Next *","End With","End Select","End Type","End Enum"] },
{ "Exception":["Elseif *","Else","Case *","Case"]}
]}
C#
public static string FormatCode(string strCode)
{
Language lang;
using (StreamReader r = new StreamReader("A:/standardvba/Logic/Indentor.json"))
{
string json = r.ReadToEnd();
lang = JsonConvert.DeserializeObject<Language>(json); //Inside lang every property is null
return IndentCodePiece(strCode, lang);
}
}
public class Language
{
public string ProgrammingLanguage { get; set; }
public List<string> IncreaseIndent { get; set; }
public List<string> DecreaseIndent { get; set; }
public List<string> Exception { get; set; }
}
【问题讨论】:
-
错误告诉你到底哪里出了问题。您的 Json 无效。在这里选中 ""IncreaseIndent":"Public Sub *","Public Function *"" 开头
-
你在不提供解决方案的情况下指出问题是天真的。错误说明了问题,而不是解决方案,我们都在这里寻求解决方案。
-
我同意,但仅限于扩展。重要的是,我们还允许开发人员在问题显而易见时自己发现问题,从而指出他需要查看的确切代码段。这就是为什么我在 JSON 中指出错误开始的确切位置的原因。 OP 没有提到您想知道如何表示列表(值中的逗号分隔)。抱歉,如果您有其他感觉。
标签: c# json asp.net-mvc parsing json-deserialization