code: def test_explanation_serialize():
      data = [[0, 1], [1, 2]]
      data_counts = [1, 2]
      feature_names = ["f1", "f2"]
      binned = BinnedData(
          O(data),
          O(data_counts),
          A(feature_names, 0),
      )
  
      values = [[1, 2], [3, 4]]
      base_values = [0, 1]
      units = "logits"
      attrib = Attribution(
          values,
          base_values,
          O(units, None),
      )
  
      expl = AttribExplanation(attrib, binned)
      serialized = expl.to_json()
      deserialized = Explanation.from_json(serialized)
  
      assert deserialized.data == [[0, 1], [1, 2]]
      assert deserialized.data_counts == [1, 2]
      assert deserialized.feature_names == ["f1", "f2"]
      assert deserialized.values == [[1, 2], [3, 4]]
      assert deserialized.base_values == [0, 1]
      assert deserialized.units == "logits"
  
imports: from .explanation import *
  from slicer import Obj
  from slicer import Alias
  from interpret.newapi.explanation import AttribExplanation
  from interpret.newapi.component import BinnedData, Attribution
label_desc: Use image node_id 1 for calling a global function with example usage: test_explanation_serialize() without return types