4 回答

TA貢獻1835條經驗 獲得超7個贊
您必須在屬性上方添加 JSON 屬性,以便在反序列化對象時識別您的屬性。
你會在下面找到一個例子
public class Parameters
{
[JsonProperty("bar_diameter")]
public float bar_diameter;
[JsonProperty("core_height")]
public float core_height;
[JsonProperty("roughing_offset")]
public float roughing_offset;
public Parameters(float barD, float coreH, float roughingO)
{
bar_diameter = barD;
core_height = coreH;
roughing_offset = roughingO;
}
}

TA貢獻1943條經驗 獲得超7個贊
引用 Prasad Telkikar 的回答,因為它馬上就解決了
使用 json2csharp 為您的 json 文件獲取模型,然后反序列化您的 json。您可以在構建功能中使用 Visual Studio 來創建類,即編輯 -> 特殊粘貼 -> 將 JSON 粘貼為類
這是上課
> public class PartParameters {
> public double bar_diameter { get; set; }
> public int core_height { get; set; }
> public double roughing_offset { get; set; } }
>
> public class RootObject {
> public PartParameters part_parameters { get; set; } }
要反序列化,請使用以下代碼
PLMpartParameter 部分 = Newtonsoft.Json.JsonConvert.DeserializeObject(json);
我的最終代碼看起來像這樣,它的工作原理!
public class PartParameters
{
public double bar_diameter { get; set; }
public int core_height { get; set; }
public double roughing_offset { get; set; }
}
public class RootObject
{
public PartParameters part_parameters { get; set; }
}
public static void LoadJson()
{
using (System.IO.StreamReader r = new System.IO.StreamReader(@"C:\part_param.json"))
{
string json = r.ReadToEnd();
try
{
RootObject part = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(json);
_logger.Info(string.Format("list values : bardiameter: {0}, coreHeight: {1}, roughingOffset: {2}",
part.part_parameters.bar_diameter,part.part_parameters.core_height, part.part_parameters.roughing_offset));
}
catch (Exception e)
{
_logger.Info(string.Format("Read Json failed {0}", e.Message));
}
}
}

TA貢獻1827條經驗 獲得超4個贊
您的代碼有一些問題:
您需要為類提供默認構造函數(這是由于序列化程序如何處理類型 - 它們不會理解您的特定于類的參數化構造函數)。
您的字段需要是可設置的屬性(只需添加就
{get;set;}
可以了)。我建議您使用來裝飾
parameters
屬性[JsonProperty("part_parameters")]
以獲得您期望的反序列化行為。
- 4 回答
- 0 關注
- 173 瀏覽
添加回答
舉報