Home / Function/ _json_split() — langchain Function Reference

_json_split() — langchain Function Reference

Architecture documentation for the _json_split() function in json.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  d81ccdd5_8091_6de6_425e_3dba9ac5dc9f["_json_split()"]
  6fcdab9c_3ecd_51f0_a2ae_3b0c8bfac048["RecursiveJsonSplitter"]
  d81ccdd5_8091_6de6_425e_3dba9ac5dc9f -->|defined in| 6fcdab9c_3ecd_51f0_a2ae_3b0c8bfac048
  d81ccdd5_8091_6de6_425e_3dba9ac5dc9f["_json_split()"]
  d81ccdd5_8091_6de6_425e_3dba9ac5dc9f -->|calls| d81ccdd5_8091_6de6_425e_3dba9ac5dc9f
  e3fb30a1_bf0b_b803_4160_e962db65ecfe["split_json()"]
  e3fb30a1_bf0b_b803_4160_e962db65ecfe -->|calls| d81ccdd5_8091_6de6_425e_3dba9ac5dc9f
  94b9fce8_9d5d_edc5_43e5_d5f5c75c727e["_json_size()"]
  d81ccdd5_8091_6de6_425e_3dba9ac5dc9f -->|calls| 94b9fce8_9d5d_edc5_43e5_d5f5c75c727e
  100a8874_86d6_7aab_05cd_e0ff79bf9bed["_set_nested_dict()"]
  d81ccdd5_8091_6de6_425e_3dba9ac5dc9f -->|calls| 100a8874_86d6_7aab_05cd_e0ff79bf9bed
  d81ccdd5_8091_6de6_425e_3dba9ac5dc9f["_json_split()"]
  d81ccdd5_8091_6de6_425e_3dba9ac5dc9f -->|calls| d81ccdd5_8091_6de6_425e_3dba9ac5dc9f
  style d81ccdd5_8091_6de6_425e_3dba9ac5dc9f fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/text-splitters/langchain_text_splitters/json.py lines 85–114

    def _json_split(
        self,
        data: Any,  # noqa: ANN401
        current_path: list[str] | None = None,
        chunks: list[dict[str, Any]] | None = None,
    ) -> list[dict[str, Any]]:
        """Split json into maximum size dictionaries while preserving structure."""
        current_path = current_path or []
        chunks = chunks if chunks is not None else [{}]
        if isinstance(data, dict):
            for key, value in data.items():
                new_path = [*current_path, key]
                chunk_size = self._json_size(chunks[-1])
                size = self._json_size({key: value})
                remaining = self.max_chunk_size - chunk_size

                if size < remaining:
                    # Add item to current chunk
                    self._set_nested_dict(chunks[-1], new_path, value)
                else:
                    if chunk_size >= self.min_chunk_size:
                        # Chunk is big enough, start a new chunk
                        chunks.append({})

                    # Iterate
                    self._json_split(value, new_path, chunks)
        else:
            # handle single item
            self._set_nested_dict(chunks[-1], current_path, data)
        return chunks

Subdomains

Frequently Asked Questions

What does _json_split() do?
_json_split() is a function in the langchain codebase, defined in libs/text-splitters/langchain_text_splitters/json.py.
Where is _json_split() defined?
_json_split() is defined in libs/text-splitters/langchain_text_splitters/json.py at line 85.
What does _json_split() call?
_json_split() calls 3 function(s): _json_size, _json_split, _set_nested_dict.
What calls _json_split()?
_json_split() is called by 2 function(s): _json_split, split_json.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free