fish2018/pansou · error

listItemsData 缺少数组

Error message

listItemsData 缺少数组

What it means

Structure guard in zlxapp parseListItems: the marker was found but no '[' appears after it before end-of-body. The embedded listItemsData declaration is present but its array payload is absent/malformed — a truncated or reformatted page.

Solutions

  1. Retry for truncated responses
  2. Update the array-locating logic if the JS embedding format changed
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at plugin/zlxapp/zlxapp.go:186 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of fish2018/pansou@beaa561337 (2026-09-07). Data as JSON: /api/errors/5d07c4bda20c89ee. Report an issue: GitHub.

Appendix: source

Thrown at plugin/zlxapp/zlxapp.go:186

	}
	if lastErr == nil {
		lastErr = fmt.Errorf("请求失败")
	}
	return nil, lastErr
}

func parseListItems(body []byte) ([]searchItem, error) {
	markerIndex := bytes.Index(body, listItemsMarker)
	if markerIndex < 0 {
		return nil, fmt.Errorf("未找到 listItemsData")
	}

	arrayStart := markerIndex + len(listItemsMarker)
	for arrayStart < len(body) && body[arrayStart] != '[' {
		arrayStart++
	}
	if arrayStart >= len(body) {
		return nil, fmt.Errorf("listItemsData 缺少数组")
	}

	arrayEnd, err := findJSONArrayEnd(body, arrayStart)
	if err != nil {
		return nil, err
	}

	var items []searchItem
	if err := jsonutil.Unmarshal(body[arrayStart:arrayEnd+1], &items); err != nil {
		return nil, err
	}
	return items, nil
}

func findJSONArrayEnd(data []byte, start int) (int, error) {
	depth := 0
	inString := false
	escaped := false

View on GitHub (pinned to beaa561337)