Регулярное выражение для анализа одного ключа: значения из JSON в Javascript

Я пытаюсь понять, можно ли найти отдельные ключи из строки JSON в Javascript и вернуть его Value с Regex . Вроде как создание поискового инструмента JSON .

Представьте себе следующий JSON

"{
    "Name": "Humpty",
    "Age": "18",
    "Siblings" : ["Dracula", "Snow White", "Merlin"],
    "Posts": [
        {
            "Title": "How I fell",
            "Comments": [
                { 
                    "User":"Fairy God Mother",
                    "Comment": "Ha, can't say I didn't see it coming"
                }
            ]
        }
    ]
}"

. Я хочу иметь возможность выполнять поиск по строке JSON и извлекать только отдельные свойства.

предположим, что это уже функция , это будет выглядеть примерно так.

function getPropFromJSON(prop, JSONString){
    // Obviously this regex will only match Keys that have
    // String Values.
    var exp = new RegExp("\""+prop+"\"\:[^\,\}]*");
    return JSONString.match(exp)[0].replace("\""+prop+"\":","");    
}

Он вернет подстроку значения для ключа .

например.

getPropFromJSON("Comments")

> "[
    { 
        "User":"Fairy God Mother",
        "Comment": "Ha, can't say I didn't see it coming"
    }
]"

Если вам интересно, почему я хочу сделать это вместо использования JSON.parse () , я создаю хранилище документов JSON вокруг localStorage . localStorage поддерживает только пары ключ / значение, поэтому я сохраняю строку JSON всего Документа в уникальном Ключе . Я хочу иметь возможность выполнять запрос к документам, в идеале без накладных расходов на JSON.parsing () всей коллекции из Documents , а затем повторно Ключи / вложенные Ключи для поиска совпадения.

Я не лучший специалист в регулярном выражении , поэтому я не знаю, как это сделать, и возможно ли это даже с одним регулярным выражением . Это всего лишь эксперимент, чтобы выяснить, возможно ли это. Любые другие идеи в качестве решения будут оценены.

13
задан AshHeskes 5 January 2012 в 22:11
поделиться