Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Как вытащить ссылки из файла .json ? (http://forum.oszone.net/showthread.php?t=306804)

Extazik 18-10-2015 16:14 2565307

Как вытащить ссылки из файла .json ?
 
Здравствуйте, вопрос такой. На компе в папочке лежит ~500 тысяч файлов формата ".json", файлы имеют вид "0.json","1.json","2.json","3.json","4.json" и т.д
В каждом файле примерно такая информация.
Код:

{"id":"4f01310d945b7032c500000d","id_number":17,"created_at":"2012-01-02T04:22:38.000Z","updated_at":"2015-10-08T10:14:31.6080Z","duplicate_reports":[],"first_seen_at":"2012-01-02T04:22:38.000+00:00","file_name":"17__the-great-and-powerful-trixie_wallpaper_outline_artist-megasweet","description":"","uploader":"Clover the Clever","image":"//derpicdn.net/img/view/2012/1/2/17__safe_solo_trixie_wallpaper_cutie+mark_source+needed_artist-colon-megasweet_minimalist_outline.png","score":172,"upvotes":177,"downvotes":5,"faves":111,"comment_count":3,"tags":"artist:megasweet, cutie mark, minimalist, outline, safe, solo, source needed, trixie, wallpaper","tag_ids":["artist-colon-megasweet","outline","wallpaper","safe","minimalist","trixie","solo","cutie-mark","source-needed"],"width":2400,"height":1500,"aspect_ratio":1.6,"original_format":"png","mime_type":"image/png","sha512_hash":"a10356bc74cfb6c44f945a832a74c8d869e80a4dc0d4188813c8bab4d6ead2120f0c3d7ee03b572cff69ee15476080019cacbf7570aaddf730bc79f1a0911b08","orig_sha512_hash":"a10356bc74cfb6c44f945a832a74c8d869e80a4dc0d4188813c8bab4d6ead2120f0c3d7ee03b572cff69ee15476080019cacbf7570aaddf730bc79f1a0911b08","source_url":"","representations":{"thumb_tiny":"//derpicdn.net/img/2012/1/2/17/thumb_tiny.png","thumb_small":"//derpicdn.net/img/2012/1/2/17/thumb_small.png","thumb":"//derpicdn.net/img/2012/1/2/17/thumb.png","small":"//derpicdn.net/img/2012/1/2/17/small.png","medium":"//derpicdn.net/img/2012/1/2/17/medium.png","large":"//derpicdn.net/img/2012/1/2/17/large.png","tall":"//derpicdn.net/img/2012/1/2/17/tall.png","full":"//derpicdn.net/img/view/2012/1/2/17__safe_solo_trixie_wallpaper_cutie+mark_source+needed_artist-colon-megasweet_minimalist_outline.png"},"is_rendered":true,"is_optimized":true,"interactions":[]}
Как можно из 500 тысяч таких файлов вытащить ссылки которые идут после "image" и записать их все например в блокнот, примерно по 50 тысяч ссылок в один файл?

Foreigner 18-10-2015 16:45 2565318

Extazik, Примерно так, насколько это будет производительно, у меня большие сомнения:
Код:

$n = 1
foreach ($file in (get-childitem *.json)) {

    (convertfrom-json (get-content $file)).image | add-content result_$n.txt
    if (([int]$file.basename % 50000) -eq 0 ) { $n++ }

}


greg zakharov 18-10-2015 18:03 2565347

Foreigner, а Вы не допускаете возможность того, что может использоваться PS v2, где командлета ConvertFrom-Json нема? Десериализация тогда будет отличаться:
Код:

Add-Type -AssemblyName System.Web.Extensions

Get-ChildItem *.json | % {$jss = New-Object Web.Script.Serialization.JavaScriptSerializer}{
  $jss.DeserializeObject((Get-Content $_.FullName))['image']
}


Foreigner 18-10-2015 18:09 2565351

greg zakharov, Вопрос конечно интересный. Получается, что надо отказываться от плюшек ради обратной совместимости.

Iska 18-10-2015 18:35 2565362

Я думаю, ради пятисот тысяч файлов автор как-нибудь изыщет такую возможность :).

greg zakharov 18-10-2015 18:46 2565365

Foreigner, это смотря под каким углом смотреть, и потом имелось в виду
Код:

man about_requires
Это во многом помогает избежать путаницы для начинающих какая версия PS нужна для запуска. Хотя - это риторика.

Extazik 19-10-2015 12:20 2565586

Большое спасибо все работает. Только вот в блокнот ссылки записываются не совсем по порядку, т.е 1, 10, 100, 101. Если возможность сделать что бы было 1, 2, 3 сделайте пожалуйста, если нет, то это не критично.


Второй же вариант во время выполнения все ссылки пишет в консоли но в блокнот их не записывает, ну здесь мне кажется я что то не так делаю.

Foreigner 19-10-2015 14:09 2565638

Extazik,
Код:

foreach ($file in (get-childitem *.json | sort { [int]$_.basename })) { ...

Extazik 19-10-2015 14:14 2565641

Спасибо :)


Время: 10:09.

Время: 10:09.
© OSzone.net 2001-