Условный json разбор в Scala - PullRequest
       0

Условный json разбор в Scala

0 голосов
/ 04 февраля 2020
import com.fasterxml.jackson.annotation.JsonInclude
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper

case class CampaignSparkParameters( category : String )
                                    object CampaignSparkParameters  {
                                    case class Inner(  
                                    booster: String,
                                    tree_method: String,
                                     verbosity:Int,
                                     nthread:String,
                                     num_workers:Int,
                                     early_stopping_rounds:Int,
                                     colsample_bytree:Float,
                                     subsample:Float,
                                     objective:String,
                                     eval_metric:String,
                                     lambda : Float,
                                     eta:Float,
                                     alpha:Float,
                                     gamma:Float,
                                     max_depth:Int,
                                     max_bin:Int,
                                     num_round:Int,
                                     missing:Int,
                                     seed:String ) 
                                    }

object CampaignSparkParameterParser {

  val mapper: ObjectMapper with ScalaObjectMapper = (new ObjectMapper() with ScalaObjectMapper)
    .registerModule(DefaultScalaModule)
    .setSerializationInclusion(JsonInclude.Include.NON_ABSENT)
    .asInstanceOf[ObjectMapper with ScalaObjectMapper]

  def parseParameters(args: Array[String]): CampaignSparkParameters = {
    mapper.readValue[CampaignSparkParameters](args(0))
  }

  def parametersToArgs(parameters: CampaignSparkParameters): Array[String] = {
    Array(
      mapper
        .writerWithDefaultPrettyPrinter()
        .writeValueAsString(parameters)
    )
  }
  def sparkParamsToMap(parameters: CampaignSparkParameters): Map[String, Any] = {
    Map(
    )
  }
}

Я передаю вход json, например,

Вход json val prparamas = CampaignSparkParameters ([{"category": "x", " данные ": {" ракета-носитель ":" gbtree " "tree_method": "Hist", "подробность": "1", "nthread": "cpuTask", "num_workers": "35", "early_stopping_rounds":" 5 " "colsample_bytree": "0.9", "подвыборки": "0.9", "цель": "binary_logisti c", "eval_metri c": "logloss", "лямбда": "10,0"," ETA ":" 0,1" , "альфа": "1,0", "гамма": "0,0", "max_depth": "5", "max_bin": "64", "num_round": "100", "отсутствует": "0", "seed": "42L"}}, {"category": "y", "data": {"booster": "gbtree", "tree_method": "hist", "verbosity": "1 " "nthread": "cpuTask", "num_workers": "35", "early_stopping_rounds": "5", "colsample_bytree": "0.9", "подвыборка": "0.9", "цель":" binary_logisti * тысяча двадцать-пять *», "eval_metri c": "logloss", "лямбда": "10,0", "ETA": "0,1", "альфа": "1.0", "гамма": "0.0", "max_depth": "5", "max_bin": "64", "num_round": "100", "missing": "0", "seed": "42L"}}])

Вызов функция val prparamas1 = prparamas.sparkParamsToM ap (prparamas)

ожидаемый вывод

если категория = x, то эти данные должны быть отображены и отображены. Пожалуйста, помогите мне изменить вышеуказанный код.

В настоящее время я получаю сообщение об ошибке

: 5: ошибка: недопустимый символ '\ u00a0' val prparamas = CampaignSparkParameters (

1 Ответ

0 голосов
/ 04 февраля 2020

\u00a0 - это символ неразрывного пробела, поэтому в вашей строке, возможно, есть некоторые из них, которые вы не видите. Простая замена может исправить это:

json.replaceAll("\u00a0", " ")

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...