Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json格式-scala_Json_Scala - Fatal编程技术网

Json格式-scala

Json格式-scala,json,scala,Json,Scala,我需要在scala中以以下方式构建Json格式。如何实现相同的功能 { "name": "protocols", "children": [ { "name": "tcp", "children": [ { "name": "source 1", "children": [ { "name": "destination 1", "children": [ { "name": "packet 1

我需要在scala中以以下方式构建Json格式。如何实现相同的功能

{
 "name": "protocols",
 "children": [
  {
   "name": "tcp", "children": [
     {
      "name": "source 1",
    "children": [
     {
      "name": "destination 1",
        "children": [
     {
      "name": "packet 1"
     },
     {
      "name": "packet 4"
     }
   ]
     },
     {
      "name": "destination 2","children": [
     {
      "name": "packet 1"
     },

     {
      "name": "packet 4"
     }
   ]
     },

我需要这样的树结构才能写入文件

如果您使用play,那么json结构可以用单个case类表示

下面是一个示例,其中这个case类称为Node

import play.api.libs.json.Json

case class Node(name: String, children: List[Node] = Nil)

implicit val format = Json.format[Node]

val childSource1 = Node("destination 1", List(Node("packet 1"), Node("packet 4")))
val childSource2 = Node("destination 2", List(Node("packet 1"), Node("packet 4")))

val source1 = Node("source 1", List(childSource1, childSource2)) 

val example = Node("protocols", List(Node("tcp", List(source1))))

Json.prettyPrint(Json.toJson(example))

如果我不能预测源和目标的数量,那该怎么办呢?它可能类似于源1到源n?Json格式不会对节点的子级深度做出任何假设。所以树的深度并不重要,只要格式保持不变。谢谢。还有一个疑问,因为我是新手。如何在代码中将source1,destination1分配给值?你的意思是反序列化?不。在我的代码中,实际上每个数据包都有protocol,source,destination变量。如何将其分配给json变量?