首先,對長文章/問題表示歉意。但是我非常沮喪,因爲我無法解決這個問題。從文件中反序列化JSON
我有一個JSON文件,我需要將其轉換爲可讀格式以存儲在數據庫中。要開始,我需要從文件中讀取日期。
Array myTextFile = File.ReadAllLines(@"C:\path\to\json\file.js");
我的文件中的數據是這樣的:
{
"javaClass": "com.untangle.app.firewall.FirewallSettings",
"rules": {
"javaClass": "java.util.LinkedList",
"list": [
{
"block": true,
"conditions": {
"javaClass": "java.util.LinkedList",
"list": [
{
"conditionType": "DST_ADDR",
"invert": false,
"javaClass": "com.untangle.app.firewall.FirewallRuleCondition",
"value": "Some String"
}
]
},
"description": "Suspecious Traffic",
"enabled": true,
"flag": true,
"javaClass": "com.untangle.app.firewall.FirewallRule",
"ruleId": 100001
},
{
"block": false,
"conditions": {
"javaClass": "java.util.LinkedList",
"list": []
},
"description": "TMP ALLOW ALL",
"enabled": false,
"flag": false,
"javaClass": "com.untangle.app.firewall.FirewallRule",
"ruleId": 100002
},
{
"block": false,
"conditions": {
"javaClass": "java.util.LinkedList",
"list": [
{
"conditionType": "DST_PORT",
"invert": false,
"javaClass": "com.untangle.app.firewall.FirewallRuleCondition",
"value": "80,443,8080"
},
{
"conditionType": "SRC_INTF",
"invert": false,
"javaClass": "com.untangle.app.firewall.FirewallRuleCondition",
"value": "non_wan"
}
]
},
"description": "Allow All HTTP(S)",
"enabled": true,
"flag": false,
"javaClass": "com.untangle.app.firewall.FirewallRule",
"ruleId": 100003
},
{
"block": true,
"conditions": {
"javaClass": "java.util.LinkedList",
"list": [
{
"conditionType": "DST_INTF",
"invert": false,
"javaClass": "com.untangle.app.firewall.FirewallRuleCondition",
"value": "wan"
},
{
"conditionType": "SRC_INTF",
"invert": false,
"javaClass": "com.untangle.app.firewall.FirewallRuleCondition",
"value": "non_wan"
}
]
},
"description": "BLOCK ALL (RULEBASE END)",
"enabled": true,
"flag": true,
"javaClass": "com.untangle.app.firewall.FirewallRule",
"ruleId": 10004
}
]
},
"version": 1
}
在那之後,我轉換使用https://quicktype.io/我的JSON到了一個C#類:
// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
//
// using QuickType;
//
// var data = GettingStarted.FromJson(jsonString);
//
namespace QuickType
{
using System;
using System.Net;
using System.Collections.Generic;
using Newtonsoft.Json;
public partial class GettingStarted
{
[JsonProperty("rules")]
public Rules Rules { get; set; }
[JsonProperty("javaClass")]
public string JavaClass { get; set; }
[JsonProperty("version")]
public long Version { get; set; }
}
public partial class Rules
{
[JsonProperty("javaClass")]
public string JavaClass { get; set; }
[JsonProperty("list")]
public List[] List { get; set; }
}
public partial class List
{
[JsonProperty("enabled")]
public bool Enabled { get; set; }
[JsonProperty("conditions")]
public Conditions Conditions { get; set; }
[JsonProperty("block")]
public bool Block { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("javaClass")]
public string JavaClass { get; set; }
[JsonProperty("flag")]
public bool Flag { get; set; }
[JsonProperty("ruleId")]
public long RuleId { get; set; }
}
public partial class Conditions
{
[JsonProperty("javaClass")]
public string JavaClass { get; set; }
[JsonProperty("list")]
public OtherList[] List { get; set; }
}
public partial class OtherList
{
[JsonProperty("invert")]
public bool Invert { get; set; }
[JsonProperty("conditionType")]
public string ConditionType { get; set; }
[JsonProperty("javaClass")]
public string JavaClass { get; set; }
[JsonProperty("value")]
public string Value { get; set; }
}
public partial class GettingStarted
{
public static GettingStarted FromJson(string json) => JsonConvert.DeserializeObject<GettingStarted>(json, Converter.Settings);
}
public static class Serialize
{
public static string ToJson(this GettingStarted self) => JsonConvert.SerializeObject(self, Converter.Settings);
}
public class Converter
{
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
DateParseHandling = DateParseHandling.None,
};
}
}
從這裏,我我堅持如何處理我在myTextFile
中讀取的數據..無法弄清楚如何以表格結構或任何其他可讀格式獲取數據,這些數據我可以在晚些時候執行其他操作r on。
我不清楚什麼被問。當您嘗試反序列化生成的C#類時會發生什麼?我假設你使用'Newtonsoft'庫進行反序列化? – DiskJunky
你應該也許不會讀你的文件到一個字符串數組。你需要將它們拼接在一起(大概都是?)Json解析器工作。改用'ReadAllText'。那麼你有一個你的整個文件的單個字符串,而不是代表每行的1到n個字符串。 – Skintkingle
@Skintkingle好吧,我可以創建一個刺痛,之後,我該如何反序列化它?這是我的主要擔心。如果我可以反序列化爲CSV格式或標準文本,我將能夠處理它 – sikas