Erstellen eines JSON-Konfigurationsabschnitts
Ist es ein Weg, um Konfigurations-Abschnitte, geschrieben in JSON statt XML?
Nehmen wir an, ich habe Folgendes ConfigurationSection
:
public class UsersConfig : ConfigurationSection {
[ConfigurationProperty("users",
IsRequired = false)]
public UserCollection Users {
get { return this["users"] as UserCollection; }
}
}
[ConfigurationCollection(typeof(UserElement),
AddItemName = "user"]
public class UsersCollection : ConfigurationElementCollection {
protected override ConfigurationElement CreateNewElement() {
return new UserElement();
}
protected override object GetElementKey(ConfigurationElement element) {
return ((UserElement)element).Name;
}
}
public class UserElement : ConfigurationElement {
[ConfigurationProperty("name",
IsRequired = true,
IsKey = true)]
public string Name {
get { return this["name"] as string; }
set { this["name"] = value; }
}
}
Kann ich dann erstellen Sie die folgende XML-Konfiguration Abschnitt:
<users-config>
<users>
<user name="Matt458" />
<user name="JohnLennon" />
</users>
</users-config>
Was würde ich erreichen wollen, ist zu mantain die gleichen UsersConfig Klasse, sondern der Zuordnung zu XML, ich möchte, um eine Karte zu einer JSON:
{
"users": [
{
"name": "Matt458"
},
{
"name": "JohnLennon"
}
]
}
Kommentar zu dem Problem
Seine möglich mit der
SerializeSection
und DeserializeSection
überschreibt das ConfigurationSection
- Klasse. Sie können ein CDATA-element im Benutzer-element zum halten beliebiger Daten, und dann Lesen Sie es während einer benutzerdefinierten Serialisierung/Deserialisierung. Haben Sie versucht, die folgenden Bibliothek? Es verfügt über
Speicher .config-Dateien, als XML-oder JSON-Dateien, strings oder einer Datenbank
so könnte es lohnt sich, einen Blick auf Sie. Meinst du web.config?
Ich persönlich habe das Gefühl, dass dies wird über den falschen Weg der Erreichung Ihrer Ziel. Die Absicht des web.config-Datei ist ein standardisiertes Verfahren zur Definition von Konfigurations-Informationen, die Sie verarbeitet ASP.NET IIS und die .NET-Framework. Wenn Sie brauchen, um push der Daten gespeichert .config-Datei an anderer Stelle in einem anderen format haben, dann sollten Sie mit der Serialisierung der Daten nach Bedarf, und nicht versuchen, etwas zu machen, unvereinbar mit der IIS-Verwaltung die MMC-Konsole oder anderen Anwendungen.
Warum dies erforderlich ist, XML-und .NET-build-in config-Klassen, die diese Aufgabe perfekt
InformationsquelleAutor der Frage Matias Cicero | 2015-05-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
diese Bibliothek könnte helfen: https://github.com/Dynalon/JsonConfig :
aus der Dokumentation:
InformationsquelleAutor der Antwort DasDas
Wenn ich das richtig verstehe muss man im wesentlichen festlegen wollen web.config-Abschnitte als JSON statt XML.
Gibt es derzeit nichts, out of the box, bedeutet dies, dass ich mir bewusst bin. Aber eine mögliche Lösung ist die Verwendung von Gulp dynamisch schreiben Sie Ihre web.config-Datei als Teil Ihrer build-Schritt. Ich habe kein konkretes Beispiel, wie ich bin mir nicht bewusst jemand, dies zu tun, aber vielleicht geben Sie einen Zeiger.
Zuerst einen Blick auf diesen Artikel, der beschreibt, wie Sie mit der xmlpoke Modul zu schreiben XML:
http://www.mikeobrien.net/blog/using-gulp-to-build-and-deploy-dotnet-apps-on-windows/
Lesen von JSON in Gulp wäre ein Stück Kuchen, so brauchen Sie nur anzeigen von JSON in XML. Sie können dann fügen Sie die Gulp-task, um Ihre build-Schritt durch die Bearbeitung Ihres .proj xml-Datei (gulp sollte Global installiert auf der Maschine, auf der build ausgeführt wird.).
Öffnen Sie Ihre proj-Datei in einem Texteditor und suchen Sie in diesem Abschnitt:
Ersetzen Sie den Kommentar mit einem Schluck Befehl
Alternative ist die Verwendung einer Bibliothek wie Newtonsoft zu Lesen, eine JSON-Datei von der Festplatte. Dann erstellen Sie Ihre eigenen Attribute und system für die Zuordnung der Werte zu den Eigenschaften Ihrer Klasse. Dies ist nicht geradlinig, aber könnte sicherlich mehr getan werden, mit etwas Aufwand.
InformationsquelleAutor der Antwort garryp
Ich bin der Empfehlung FX.Konfiguration, können Sie es hinzufügen von NuGet.
Sie finden ihn unter: http://nugetmusthaves.com/Package/FX.Configuration
einige code-Beispiele finden Sie unter: https://bitbucket.org/friendlyx/fx.configuration
es ermöglicht Ihnen das hinzufügen, um die App.config Sachen wie:
< add key="JsonConfig" value="{ 'Id': '42', 'Name': 'foo' }" />
andere Möglichkeit, als mit dem FX.Konfiguration zum hinzufügen einer neuen config.json-Datei, die alle Konfigurations-und bei der Erstellung der Instanz wird es Lesen und analysieren es.
folgende code tut genau das, was Sie brauchen, mit der neuen json-config-Datei.
InformationsquelleAutor der Antwort silver
Können Sie Ihre eigenen UsersConfig Klasse, dass es in der Lage sein serialisiert und deserialisiert werden, um JSON. Dann schreiben Sie eine weitere Klasse wird das abrufen der Konfiguration aus der Datei. Im app.config Sie können einzelne Einstellung, die Sie an den Ort, wo Sie speichern Sie Ihre json-config.
Zu diesem Zweck können Sie leicht mit Json.Net und Attribute hinzufügen, um Ihre UsersConfig Klasse.
InformationsquelleAutor der Antwort Pawel Rosinski
//Zum konvertieren eines XML-Knoten enthalten, die in xml-string in ein JSON-string
//Konvertieren der JSON-text im json-string in ein XML-Knoten
Dokumentation hier: Konvertierung zwischen JSON-und XML mit Json.NET
InformationsquelleAutor der Antwort Dhruv Pandya