{"id":3617,"date":"2016-04-13T02:55:08","date_gmt":"2016-04-13T02:55:08","guid":{"rendered":"http:\/\/www.garysieling.com\/blog\/?p=3617"},"modified":"2016-04-13T02:55:08","modified_gmt":"2016-04-13T02:55:08","slug":"scala-read-json-solr","status":"publish","type":"post","link":"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/","title":{"rendered":"Scala: Read JSON from Solr"},"content":{"rendered":"<p>The Scala play library has a library for creating and reading JSON. To import it you can add a couple lines in SBT:<\/p>\n<pre lang=\"scala\">\nlibraryDependencies += \"com.typesafe.play\" %% \"play-json\" % \"2.4.6\"\nlibraryDependencies += \"org.scalaj\" %% \"scalaj-http\" % \"2.3.0\"\n<\/pre>\n<p>To hit Solr, you can build a URL and pull the result with the HTTP library I imported:<\/p>\n<pre lang=\"scala\">\nval url = \n  \"http:\/\/localhost:8983\" +\n  \"\/solr\/ssl_certificates\/\" + \n  \"select?q=level:root\" +\n  \"&rows=83059\n  \"&fl=domain\n  \"&wt=json\"\n\nval result = Http.apply(url)\n  .header(\"Content-Type\", \"application\/json\")\n  .header(\"Charset\", \"UTF-8\")\n  .asString\n  .body\n<\/pre>\n<p>This is an example of what the output looks like:<\/p>\n<pre lang=\"javascript\">\n{\n  \"responseHeader\":{\n    \"status\":0,\n    \"QTime\":1,\n    \"params\":{\n      \"fl\":\"domain\",\n      \"indent\":\"true\",\n      \"q\":\"level:root\",\n      \"wt\":\"json\",\n      \"rows\":\"1\"}\n  },\n  \"response\":{\"numFound\":83059,\"start\":0,\"docs\": [\n      {\n        \"domain\":[\"www.01com.com\"]\n      }\n    ]\n  }\n}\n<\/pre>\n<p>To parse this, you can use an expression with Scala operators resembling an XPath, to get to the area we want, then parse out the important bits. You can match on different types (strings, ints, etc), or use case classes to match as well, if the schema is regular.<\/p>\n<pre lang=\"scala\">\nval jsonResult = Json.parse(result)\nval domains =\n  (jsonResult \\ \"response\" \\ \"docs\").get match {\n    case domainObjList: JsArray =>\n      domainObjList.value.map(\n        (domainObj) =>\n          domainObj match {\n            case obj: JsObject =>\n              obj.value(\"domain\") match {\n                case arr: JsArray => arr(0).get.toString\n              }\n            case _ => ???\n          }\n        )\n      case _ => ???\n    }\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>The Scala play library has a library for creating and reading JSON. To import it you can add a couple lines in SBT: libraryDependencies += &#8220;com.typesafe.play&#8221; %% &#8220;play-json&#8221; % &#8220;2.4.6&#8221; libraryDependencies += &#8220;org.scalaj&#8221; %% &#8220;scalaj-http&#8221; % &#8220;2.3.0&#8221; To hit Solr, you can build a URL and pull the result with the HTTP library I imported: &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Scala: Read JSON from Solr&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[4],"tags":[302,322,480,486,517],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"The Scala play library has a library for creating and reading JSON. To import it you can add a couple lines in SBT: libraryDependencies += &quot;com.typesafe.play&quot; %% &quot;play-json&quot; % &quot;2.4.6&quot; libraryDependencies += &quot;org.scalaj&quot; %% &quot;scalaj-http&quot; % &quot;2.3.0&quot; To hit Solr, you can build a URL and pull the result with the HTTP library I imported:\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"gary\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Gary Sieling - Software Engineer\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Scala: Read JSON from Solr - Gary Sieling\" \/>\n\t\t<meta property=\"og:description\" content=\"The Scala play library has a library for creating and reading JSON. To import it you can add a couple lines in SBT: libraryDependencies += &quot;com.typesafe.play&quot; %% &quot;play-json&quot; % &quot;2.4.6&quot; libraryDependencies += &quot;org.scalaj&quot; %% &quot;scalaj-http&quot; % &quot;2.3.0&quot; To hit Solr, you can build a URL and pull the result with the HTTP library I imported:\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2016-04-13T02:55:08+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2016-04-13T02:55:08+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Scala: Read JSON from Solr - Gary Sieling\" \/>\n\t\t<meta name=\"twitter:description\" content=\"The Scala play library has a library for creating and reading JSON. To import it you can add a couple lines in SBT: libraryDependencies += &quot;com.typesafe.play&quot; %% &quot;play-json&quot; % &quot;2.4.6&quot; libraryDependencies += &quot;org.scalaj&quot; %% &quot;scalaj-http&quot; % &quot;2.3.0&quot; To hit Solr, you can build a URL and pull the result with the HTTP library I imported:\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/scala-read-json-solr\\\/#blogposting\",\"name\":\"Scala: Read JSON from Solr - Gary Sieling\",\"headline\":\"Scala: Read JSON from Solr\",\"author\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#organization\"},\"datePublished\":\"2016-04-13T02:55:08+00:00\",\"dateModified\":\"2016-04-13T02:55:08+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/scala-read-json-solr\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/scala-read-json-solr\\\/#webpage\"},\"articleSection\":\"Code Examples, javascript, json, scala, scala-lang, solr\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/scala-read-json-solr\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.garysieling.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/category\\\/code-examples\\\/#listItem\",\"name\":\"Code Examples\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/category\\\/code-examples\\\/#listItem\",\"position\":2,\"name\":\"Code Examples\",\"item\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/category\\\/code-examples\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/scala-read-json-solr\\\/#listItem\",\"name\":\"Scala: Read JSON from Solr\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/scala-read-json-solr\\\/#listItem\",\"position\":3,\"name\":\"Scala: Read JSON from Solr\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/category\\\/code-examples\\\/#listItem\",\"name\":\"Code Examples\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#organization\",\"name\":\"Gary Sieling\",\"description\":\"Software Engineer\",\"url\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/#author\",\"url\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/\",\"name\":\"gary\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/scala-read-json-solr\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0be925276d848ffe98a6a9dc8cf33e67?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"gary\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/scala-read-json-solr\\\/#webpage\",\"url\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/scala-read-json-solr\\\/\",\"name\":\"Scala: Read JSON from Solr - Gary Sieling\",\"description\":\"The Scala play library has a library for creating and reading JSON. To import it you can add a couple lines in SBT: libraryDependencies += \\\"com.typesafe.play\\\" %% \\\"play-json\\\" % \\\"2.4.6\\\" libraryDependencies += \\\"org.scalaj\\\" %% \\\"scalaj-http\\\" % \\\"2.3.0\\\" To hit Solr, you can build a URL and pull the result with the HTTP library I imported:\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/scala-read-json-solr\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/author\\\/gary\\\/#author\"},\"datePublished\":\"2016-04-13T02:55:08+00:00\",\"dateModified\":\"2016-04-13T02:55:08+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/\",\"name\":\"Gary Sieling\",\"description\":\"Software Engineer\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.garysieling.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Scala: Read JSON from Solr - Gary Sieling","description":"The Scala play library has a library for creating and reading JSON. To import it you can add a couple lines in SBT: libraryDependencies += \"com.typesafe.play\" %% \"play-json\" % \"2.4.6\" libraryDependencies += \"org.scalaj\" %% \"scalaj-http\" % \"2.3.0\" To hit Solr, you can build a URL and pull the result with the HTTP library I imported:","canonical_url":"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/#blogposting","name":"Scala: Read JSON from Solr - Gary Sieling","headline":"Scala: Read JSON from Solr","author":{"@id":"https:\/\/www.garysieling.com\/blog\/author\/gary\/#author"},"publisher":{"@id":"https:\/\/www.garysieling.com\/blog\/#organization"},"datePublished":"2016-04-13T02:55:08+00:00","dateModified":"2016-04-13T02:55:08+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/#webpage"},"isPartOf":{"@id":"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/#webpage"},"articleSection":"Code Examples, javascript, json, scala, scala-lang, solr"},{"@type":"BreadcrumbList","@id":"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.garysieling.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/#listItem","name":"Code Examples"}},{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/#listItem","position":2,"name":"Code Examples","item":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/#listItem","name":"Scala: Read JSON from Solr"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/#listItem","position":3,"name":"Scala: Read JSON from Solr","previousItem":{"@type":"ListItem","@id":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/#listItem","name":"Code Examples"}}]},{"@type":"Organization","@id":"https:\/\/www.garysieling.com\/blog\/#organization","name":"Gary Sieling","description":"Software Engineer","url":"https:\/\/www.garysieling.com\/blog\/"},{"@type":"Person","@id":"https:\/\/www.garysieling.com\/blog\/author\/gary\/#author","url":"https:\/\/www.garysieling.com\/blog\/author\/gary\/","name":"gary","image":{"@type":"ImageObject","@id":"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/0be925276d848ffe98a6a9dc8cf33e67?s=96&d=identicon&r=g","width":96,"height":96,"caption":"gary"}},{"@type":"WebPage","@id":"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/#webpage","url":"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/","name":"Scala: Read JSON from Solr - Gary Sieling","description":"The Scala play library has a library for creating and reading JSON. To import it you can add a couple lines in SBT: libraryDependencies += \"com.typesafe.play\" %% \"play-json\" % \"2.4.6\" libraryDependencies += \"org.scalaj\" %% \"scalaj-http\" % \"2.3.0\" To hit Solr, you can build a URL and pull the result with the HTTP library I imported:","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.garysieling.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/#breadcrumblist"},"author":{"@id":"https:\/\/www.garysieling.com\/blog\/author\/gary\/#author"},"creator":{"@id":"https:\/\/www.garysieling.com\/blog\/author\/gary\/#author"},"datePublished":"2016-04-13T02:55:08+00:00","dateModified":"2016-04-13T02:55:08+00:00"},{"@type":"WebSite","@id":"https:\/\/www.garysieling.com\/blog\/#website","url":"https:\/\/www.garysieling.com\/blog\/","name":"Gary Sieling","description":"Software Engineer","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.garysieling.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Gary Sieling - Software Engineer","og:type":"article","og:title":"Scala: Read JSON from Solr - Gary Sieling","og:description":"The Scala play library has a library for creating and reading JSON. To import it you can add a couple lines in SBT: libraryDependencies += &quot;com.typesafe.play&quot; %% &quot;play-json&quot; % &quot;2.4.6&quot; libraryDependencies += &quot;org.scalaj&quot; %% &quot;scalaj-http&quot; % &quot;2.3.0&quot; To hit Solr, you can build a URL and pull the result with the HTTP library I imported:","og:url":"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/","article:published_time":"2016-04-13T02:55:08+00:00","article:modified_time":"2016-04-13T02:55:08+00:00","twitter:card":"summary_large_image","twitter:title":"Scala: Read JSON from Solr - Gary Sieling","twitter:description":"The Scala play library has a library for creating and reading JSON. To import it you can add a couple lines in SBT: libraryDependencies += &quot;com.typesafe.play&quot; %% &quot;play-json&quot; % &quot;2.4.6&quot; libraryDependencies += &quot;org.scalaj&quot; %% &quot;scalaj-http&quot; % &quot;2.3.0&quot; To hit Solr, you can build a URL and pull the result with the HTTP library I imported:"},"aioseo_meta_data":{"post_id":"3617","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2023-02-04 16:48:35","updated":"2026-07-06 01:46:54","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.garysieling.com\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/\" title=\"Code Examples\">Code Examples<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tScala: Read JSON from Solr\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.garysieling.com\/blog"},{"label":"Code Examples","link":"https:\/\/www.garysieling.com\/blog\/category\/code-examples\/"},{"label":"Scala: Read JSON from Solr","link":"https:\/\/www.garysieling.com\/blog\/scala-read-json-solr\/"}],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts\/3617"}],"collection":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/comments?post=3617"}],"version-history":[{"count":0,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts\/3617\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/media?parent=3617"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/categories?post=3617"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/tags?post=3617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}