Convert Javascript objects to JSON

I will still program an online converter but until then you have the manual approach

    Inhaltsangabe
  1. Regex
    1. An example
    2. Explanation
  2. The conversion
    1. What needs to be changed?
    2. Method
    3. Result
  3. Conclusion

Today it is again about programming. I spent this whole week only working on my Islam Archive project. It’s not even in the pre-alpha stage because I’m trying to make it as perfect as possible.

Regex

In computer language, there are so-called Regular Expressions. With those you can create a pattern, after which the computer should search and the results can then be filtered accordingly.

An example

Let’s say we had the following phone list and just want to mark the German phone numbers with the area code for Germany (+49):

  • +49 12 3 456
  • +30 2 34 567
  • +1 123 45 6
  • +49 234 56 7
  • +90 12 3 456

Then you can do that with a regular expression. The advantage here is that the structure does not matter as long as it fits into the pattern of the regular expression. In this case it would be:

+49 [ d] +

Explanation

  • +49 Every line is searched for the character string +49.
  • [ d] + Searches for all spaces and numbers ( d) in the same line. This search is repeated (+) until either the line ends or a character appears other than a space or number.

You will understand why the understanding of regular expressions so important is, when I explain the conversion process to you.

The conversion

I have the following javascript object:

{
	system: {
		error: 'Hata!',
	},
	login_register: {
		join: 'Katıl',
		login: 'Giriş yap',
		no_account_question: 'Hesabın yok mu?',
		register_now: 'Bir hesap oluştur',
		already_account_question: 'Zaten bir hesabın var mı?',
		logout: 'Çıkış yap',
		register: 'Üye ol',
		email: 'Email adresi',
		email_check: 'Lütfen Email adresini kontrol et.',
		email_already_exists: 'Bu e-posta adresine sahip bir hesap zaten var.',
		password: 'Şifre',
		password_repeat: 'Şifre tekrarı',
		password_check: 'Lütfen Şifreni kontrol et.',
		onlyLoggedIn : 'Sadece üyeler için',
	},
	cms: {
		language : 'Dil',
		show_details : 'Detaylar',
		add: '{element} ekle',
		edit: '{element} düzenle',
		split: 'Burandan böl',
		cut: 'Kes',
		view: {
			readOnly : 'Sadece oku',
			detail : 'Detay',
			edit : 'Düzenle'
		},
		save : 'Kaydet',
		back : 'Geri',
		close : 'Kapat',
		abort : 'İptal',
		merge : 'Bidahakisiyle birleştir',
		image : 'Resim',
		home: 'Ana sayfa',
		finished : 'Tamam',
		search : {
			enter : 'Aradığınızı yazın'
		},
		
	},
	global : {
		page : {
			singular : 'Sayfa',
			plural : 'Sayfa',
		},
		favourite : {
			singular : 'Favori',
			plural : 'Favoriler',
		},
		collection : {
			singular : 'Koleksiyon',
			plural : 'Koleksiyonlar',
		},
		work : {
			begin : 'Çalış',
		},
		beginning : 'Baştan',
		continue : 'Devam et',
	},
	elements : {
		quran : {
			singular : 'Kurân',
			plural : 'Kurân',
			in : 'Kurân\'da',
			child : {
				singular : 'Sûre',
				plural : 'Sûreler',
				show : '{no}. Sûreyi görüntüle',
			},
			grandchild : {
				not_found : 'Âyet bulunamadı',
				singular : 'Âyet',
				plural : 'Âyet',
				show : '{no}. Âyeti görüntüle',
				show_all : 'Tüm Sûreyi göster'
			}
		},
		tag : {
			no_tags : 'Şuan konu eklenmedi',
			singular : 'Konu',
			plural : 'Konular',
			in : 'Konularda',
			enter : 'Konu girin',
			add : 'Konu ekle',
			has : '{count} konu',
		},
		mention : {
			singular : 'Bahis',
			plural : 'Bahisler',
			add : 'Bahis ekle',
			no_mentions : 'Şuan bahsedilen Eklenti yok',
			select_mention : 'Bahis şeklini seçin'
		},
		book : {
			singular : 'Kitap',
			plural : 'Kitaplar',
			title : 'Kitap adı',
			author : 'Yazar',
			in : 'Kitaplarda',
			search : 'Kitaplarda adı',
			image : {
				image : 'Kitap resmi',
				remove : 'Kitaptan resmi kaldır',
			},
			child : {
				singular : 'Bölüm',
				title : 'Bölüm adi',
			},
			grandchild : {
				not_found : 'Pasaj bulunamadı',
				singular : 'Pasaj',
				show_all : 'Tüm bölümleri göster'
			},
			last : {
				added : 'Son eklenen kitaplar',
			}
		},
		hadith : {
			singular : 'Hadis',
			plural : 'Hadisler',
			in : 'Hadislerde',
			description : 'Hz. Peygamber Efendimizin sözüne Merfu Hadis, Sahabe sözlerine Mevkuf  Hadis, Tabiin sözlerine de Maktu Hadis ismi verilir.',
			grandchild : {
				singular : 'Hadis',
				show_all : 'Tüm hadisleri göster'
			}
		},
		audio : {
			singular : 'Ses',
			plural : 'Ses kayıtları',
			in : 'Ses kayıtlarında',
		},
		video : {
			singular : 'Video',
			plural : 'Videolar',
			in : 'Videolarda',
		},
		history : {
			singular : 'Tarih',
			plural: 'Tarihî olaylar',
			in : 'Tarihî olaylarda',
		},
		person : {
			singular : 'Şahıs',
			plural : 'Şahıslar',
			name : 'İsim',
			title : 'Ünvan',
			birth : 'Doğum',
			death : 'Ölüm',
			enter : 'Şahıs adı',
			in : 'Şahıslarda',
			grandchild : {
				singular : 'Şahıs'
			}
		},
	},
	element_metas: {
		title : {
			t : 'Başlık',
		},
		birth : {
			t : 'Dogum',
		},
		death : {
			t : 'Ölüm',
		},
	}
}

What needs to be changed?

  1. JSON always uses a quotation marks (“) to encase its keys and variables. The keys and variables must be encased in a quotation mark (“)
  2. JSON takes it very precisely with the number of object contents. So if you’ve added some elements you can not add a comma (,) at the end like the last element in the example (death).

Method

I wrote a couple of regex entries for the automated conversion and after that it went by itself. For this I activated the Regex search in my editor (Atom) in the “Search and replace” function. Then I did the following searches:

Search for( )(\w)
Replace with $ 1 “$ 2

Search for ( w):
Replace with $ 1:

Search for ( w):
Replace with $ 1 “:

Search for , ([ s] +})
Replace with $ 1

Search for
Replace with

Result

{
	"system" : {
		"error" : "Hata!"
	},
	"login_register" : {
		"join" : "Katıl",
		"login" : "Giriş yap",
		"no_account_question" : "Hesabın yok mu?",
		"register_now" : "Bir hesap oluştur",
		"already_account_question" : "Zaten bir hesabın var mı?",
		"logout" : "Çıkış yap",
		"register" : "Üye ol",
		"email" : "Email adresi",
		"email_check" : "Lütfen Email adresini kontrol et.",
		"email_already_exists" : "Bu e-posta adresine sahip bir hesap zaten var.",
		"password" : "Şifre",
		"password_repeat" : "Şifre tekrarı",
		"password_check" : "Lütfen Şifreni kontrol et.",
		"onlyLoggedIn" : "Sadece üyeler için"
	},
	"cms" : {
		"language" : "Dil",
		"show_details" : "Detaylar",
		"add" : "{element} ekle",
		"edit" : "{element} düzenle",
		"split" : "Burandan böl",
		"cut" : "Kes",
		"view" : {
			"readOnly" : "Sadece oku",
			"detail" : "Detay",
			"edit" : "Düzenle"
		},
		"save" : "Kaydet",
		"back" : "Geri",
		"close" : "Kapat",
		"abort" : "İptal",
		"merge" : "Bidahakisiyle birleştir",
		"image" : "Resim",
		"home" : "Ana sayfa",
		"finished" : "Tamam",
		"search" : {
			"enter" : "Aradığınızı yazın"
		}
		
	},
	"global" : {
		"page" : {
			"singular" : "Sayfa",
			"plural" : "Sayfa"
		},
		"favourite" : {
			"singular" : "Favori",
			"plural" : "Favoriler"
		},
		"collection" : {
			"singular" : "Koleksiyon",
			"plural" : "Koleksiyonlar"
		},
		"work" : {
			"begin" : "Çalış"
		},
		"beginning" : "Baştan",
		"continue" : "Devam et"
	},
	"elements" : {
		"quran" : {
			"singular" : "Kurân",
			"plural" : "Kurân",
			"in" : "Kurân\"da",
			"child" : {
				"singular" : "Sûre",
				"plural" : "Sûreler",
				"show" : "{no}. Sûreyi görüntüle"
			},
			"grandchild" : {
				"not_found" : "Âyet bulunamadı",
				"singular" : "Âyet",
				"plural" : "Âyet",
				"show" : "{no}. Âyeti görüntüle",
				"show_all" : "Tüm Sûreyi göster"
			}
		},
		"tag" : {
			"no_tags" : "Şuan konu eklenmedi",
			"singular" : "Konu",
			"plural" : "Konular",
			"in" : "Konularda",
			"enter" : "Konu girin",
			"add" : "Konu ekle",
			"has" : "{count} konu"
		},
		"mention" : {
			"singular" : "Bahis",
			"plural" : "Bahisler",
			"add" : "Bahis ekle",
			"no_mentions" : "Şuan bahsedilen Eklenti yok",
			"select_mention" : "Bahis şeklini seçin"
		},
		"book" : {
			"singular" : "Kitap",
			"plural" : "Kitaplar",
			"title" : "Kitap adı",
			"author" : "Yazar",
			"in" : "Kitaplarda",
			"search" : "Kitaplarda adı",
			"image" : {
				"image" : "Kitap resmi",
				"remove" : "Kitaptan resmi kaldır"
			},
			"child" : {
				"singular" : "Bölüm",
				"title" : "Bölüm adi"
			},
			"grandchild" : {
				"not_found" : "Pasaj bulunamadı",
				"singular" : "Pasaj",
				"show_all" : "Tüm bölümleri göster"
			},
			"last" : {
				"added" : "Son eklenen kitaplar"
			}
		},
		"hadith" : {
			"singular" : "Hadis",
			"plural" : "Hadisler",
			"in" : "Hadislerde",
			"description" : "Hz. Peygamber Efendimizin sözüne Merfu Hadis, Sahabe sözlerine Mevkuf  Hadis, Tabiin sözlerine de Maktu Hadis ismi verilir.",
			"grandchild" : {
				"singular" : "Hadis",
				"show_all" : "Tüm hadisleri göster"
			}
		},
		"audio" : {
			"singular" : "Ses",
			"plural" : "Ses kayıtları",
			"in" : "Ses kayıtlarında"
		},
		"video" : {
			"singular" : "Video",
			"plural" : "Videolar",
			"in" : "Videolarda"
		},
		"history" : {
			"singular" : "Tarih",
			"plural" : "Tarihî olaylar",
			"in" : "Tarihî olaylarda"
		},
		"person" : {
			"singular" : "Şahıs",
			"plural" : "Şahıslar",
			"name" : "İsim",
			"title" : "Ünvan",
			"birth" : "Doğum",
			"death" : "Ölüm",
			"enter" : "Şahıs adı",
			"in" : "Şahıslarda",
			"grandchild" : {
				"singular" : "Şahıs"
			}
		}
	},
	"element_metas" : {
		"title" : {
			"t" : "Başlık"
		},
		"birth" : {
			"t" : "Dogum"
		},
		"death" : {
			"t" : "Ölüm"
		}
	}
}

Conclusion

I needed this conversion for my Islam Archive project and thought that I could share it with you here. I will also program a landing page where you can enter your javascript objects and get a JSON object as the final result. Currently, however, I have very different priorities.

Topics

Javascript JSON php Program python technology website

Beitrag teilen

WhatsApp it

Folgen Sie uns