Skip to main content
Glama

@arizeai/phoenix-mcp

Official
by Arize-ai
jsonUtils.ts2.79 kB
/** * Checks if a string is a valid JSON string. * @param {Object} options - The options object. * @param {string} options.str - The string to check. * @param {boolean} [options.excludePrimitives=false] - Whether to exclude primitive types from the check. * @param {boolean} [options.excludeArray=false] - Whether to exclude arrays from the check. * @param {boolean} [options.excludeNull=false] - Whether to exclude null from the check. * @returns {boolean} - Returns true if the string is a valid JSON string, false otherwise. */ export function isJSONString({ str, excludePrimitives = false, excludeArray = false, excludeNull = false, }: { str: string; excludePrimitives?: boolean; excludeArray?: boolean; excludeNull?: boolean; }) { try { const parsed = JSON.parse(str); if (excludePrimitives && typeof parsed !== "object") { return false; } if (excludeArray && Array.isArray(parsed)) { return false; } if (excludeNull && parsed === null) { return false; } } catch (e) { return false; } return true; } export function isJSONObjectString(str: string) { return isJSONString({ str, excludeArray: true, excludePrimitives: true }); } export function safelyParseJSON(str: string) { try { return { json: JSON.parse(str) }; } catch (e) { return { json: null, parseError: e }; } } export function safelyStringifyJSON( ...args: Parameters<typeof JSON.stringify> ) { try { return { json: JSON.stringify(...args) }; } catch (e) { return { json: null, stringifyError: e }; } } /** * Flattens an object into a single-level object. */ function flattenObject( obj: object, parentKey: string = "", separator: string = "." ): Record<string, string | boolean | number> { const result: Record<string, string | boolean | number> = {}; for (const [key, value] of Object.entries(obj)) { const newKey = parentKey ? `${parentKey}${separator}${key}` : key; if (value && typeof value === "object") { Object.assign(result, flattenObject(value, newKey, separator)); } else { result[newKey] = value; } } return result; } /** * A function that flattens a JSON string into a single-level object. * @param jsonString - The JSON string to flatten. */ export function jsonStringToFlatObject( jsonString: string, separator: string = "." ): Record<string, string | boolean | number> { try { // Parse the JSON string into an object const parsedObj = JSON.parse(jsonString); if (typeof parsedObj !== "object") { return {}; } // Flatten the parsed object return flattenObject(parsedObj, "", separator); } catch (e) { // The parsing failed, do nothing } return {} satisfies Record<string, string | boolean | number>; }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Arize-ai/phoenix'

If you have feedback or need assistance with the MCP directory API, please join our Discord server