2016-03-22 9 views
0

Ich bin ein Ruby-Entwickler, der an einem Projekt mit einem Rails 4-Backend und einem React-Redux-Frontend, das mit JSON kommuniziert, arbeitet.React-Redux Rails JSON-Schlüssel Normalisierung und Übersetzung

Gibt es eine Reihe von Tools, Industriestandard-Prozessen oder Praktiken zur Normalisierung der JSON-Formatierung zwischen den beiden?

Standard Rails sendet und empfängt Snake Case. Z.B. {key_a: 'val a', Schlüssel_b: 'val b'}

Javascript neigt dazu, Kamelfall zu sein. Z.B. {Keya: 'val a', KeyB: 'val b'}

Wenn es keine gemeinsame Weg, dies zu umgehen, gibt es zumindest eine gemeinsame Seite, Frontend oder Backend, die Übersetzung zu tun auf

+0

Da JSON für Javascript Object Notation steht, könnte man sagen, dass camelCase der bevorzugte Standard ist. Außerdem hat Lodash eine Methode, zwischen den beiden zu konvertieren. Siehe zum Beispiel: lodash.com/docs#camelCase – bryanph

+0

Ja, das Problem ist, dass es an beiden Enden, vorne und hinten, einige signifikante Entwicklungen gab, bevor dieses Problem angesprochen wurde. Also haben wir Sachen in camelCase auf dem Client gespeichert und dann erwarten die Standard-Rails-Controller snake_case. Es klingt so, als müsste ich eine Seite, einen Client oder Server auswählen und die Übersetzung für jede Kommunikation mit dem Server explizit ausführen. Es wäre schön, wenn es etwas gibt, das etwas automagischer wäre. –

Antwort

0

Die Schlussfolgerung, die wir kamen, war, dass es nicht wirklich ein gemeinsames Paradigma gibt, für welche Seite die Schlüsselübersetzung von einem Fall (Schlange) zu einem anderen (Kamel) und zurück verwaltet wird. Wir entschieden, dass unser erstes Kriterium sein würde, dass wir, wenn wir eine Übersetzung auf einer bestimmten Seite, Client gegen Server, machen, sowohl die eingehenden als auch die ausgehenden Übersetzungen auf dieser Seite tun werden. Nachdem dies entschieden wurde, war es eine leichtere Implementierung, dies auf der Client-Seite in Javascript zu tun.

0

ich in der gleichen Situation mit Rails war 5. Allerdings ist die Art und Weise Tasten auf Redux Seite zu erklären ist:

const RequestKeysFromState = { 'key_a': this.state.keyA, 'key_b': this.state.keyB, key: this.state.key, };

Wie ich verstanden habe, ist dies für den normalen Gebrauch JS Fall ist.