PHP - JSON yeniden biçimlendirmek için regex

4 Cevap php

Ben php kullanarak tek tek birden fazla JSON dosya yeniden biçimlendirmek için nasıl anlamaya çalışıyorum, ama karmaşık normal ifadeler kullanmak nasıl anlamak zor bir zaman yaşıyorum. Ben şu JSON veri birden çok örneğini hade varsayalım:

{
    "felines": {
        "cats": [
            {
                "age": 7,
                "name": "frank" 
            },
            {
                "age": 4,
                "name": "popeye" 
            } 
        ] 
    },
    "canines": {
        "dogs": [
            {
                "age": 2,
                "name": "lucy" 
            },
            {
                "age": 12,
                "name": "wilson" 
            } 
        ] 
    }
}

Ben bir php komut dosyası bu JSON nesnesinin 2 örneği vardı ve "köpek" nesneleri kaldırma, ben iki ayrı JSON durumda hem "kedi" nesneler birleşik tek bir JSON nesnesi oluşturmak istedik diyelim. Ben sonuçta isterdim dosyası şöyle görünecektir:

{
    "felines": {
        "cats": [
            {
                "age": 7,
                "name": "frank" 
            },
            {
                "age": 4,
                "name": "popeye" 
            } 
        ] 
    },
    "felines": {
        "cats": [
            {
                "age": 6,
                "name": "sam" 
            },
            {
                "age": 4,
                "name": "kelly" 
            } 
        ] 
    }
}

I mümkün splice olacak ve php kullanarak düzenli ifadeler ile bu JSON nesneleri birleştirmek nasıl biliyor mu?

Teşekkürler.

4 Cevap

neden ve json_encode kullanmayın json_decode php diziler işleri yapmak için daha sonra düzenli ifadelerle bunu yaparken çok daha kolay gibi görünüyor.

Ben bu regexes ile çözmeye çalışmalısınız bir sorun olduğunu sanmıyorum. , Diziler çağrışım sizin birleştirme yapın, ve sonra geri JSON değiştirmek için JSON dosya dönüştürme düşünün.

Düzenli ifadeler JSON veri, HTML etiketleri, programlama dilleri, vb Bazı genişletilmiş düzenli ifade aksaklıklar çevresinde yama kütüphaneleri gibi keyfi iç içe bağlamlarda ile ilgili de, genel olarak, gerçekten kötü.

Ama, gerçekten, JSON kendisi bunu yapmak için gereken bir sebep var mı? Ve regex? Muhtemelen gerçek PHP veri yapıları veri serisi kaldırılırken bir much kolay bir zaman var olacak, ve bazı şeyleri manipüle / birleştirme ediyoruz. İşiniz bittiğinde, sonra, sonucu yeniden serialize.

RageZ json_encode ve json_decode kullanarak, önerilen olurdu yapmak için en iyi yolu, ancak JSON, aynı anahtar adı için izin yapar değil mi? Alabileceğiniz en iyi bu olacaktır:

{
	"felines": {
		"cats": [
			{
				"age": 7,
				"name": "frank"
			},
			{
				"age": 4,
				"name": "popeye"
			},
			{
				"age": 6,
				"name": "sam"
			},
			{
				"age": 4,
				"name": "kelly"
			}
		]
	}
}