ys1r/
json.rs

1use serde_json::Value;
2
3/// Converts a JSON string into a `serde_json::Value`.
4///
5/// # Arguments
6///
7/// * `data_string` - A string slice containing JSON data.
8///
9/// # Returns
10///
11/// A `Result` containing the parsed JSON value or an error if parsing fails.
12pub fn text2json(data_string: &str) -> Result<Value, serde_json::Error> {
13    serde_json::from_str(data_string)
14}
15
16#[cfg(test)]
17mod tests {
18    use super::*;
19    use serde_json::json;
20
21    #[test]
22    fn test_text2json_valid_input() {
23        let input = r#"{"hello": 123}"#;
24        let expected = json!({"hello": 123});
25        let result = text2json(input).unwrap();
26        assert_eq!(result, expected, "JSON did not match expected value");
27    }
28
29    #[test]
30    fn test_text2json_invalid_syntax() {
31        let input = r#"{ invalid json }"#;
32        let err = text2json(input).unwrap_err();
33        assert!(err.is_syntax(), "Expected a syntax error");
34    }
35
36    #[test]
37    fn test_text2json_data_error() {
38        let input = r#"{"num": "abc"}"#;
39        let parsed: Result<serde_json::Value, _> = text2json(input);
40        let value = parsed.unwrap();
41
42        assert_eq!(value["num"], "abc");
43    }
44}