Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. use serde_json::{self, Value}; // 1.0.38
  2.  
  3. fn main() {
  4. let all_type = b"
  5. {
  6. \"number\": 123,
  7. \"string\": \"abcdefg\",
  8. \"boolean\": true
  9. }";
  10. let string_only = b"
  11. {
  12. \"string1\": \"abcdefg\",
  13. \"string2\": \"abcdefg\",
  14. \"string3\": \"abcdefg\",
  15. \"string_array\": [\"abcd\", \"efg\"]
  16. }";
  17.  
  18. let all: Value = serde_json::from_slice(all_type).unwrap();
  19. let string: Value = serde_json::from_slice(string_only).unwrap();
  20. let flag1 = is_data_valid(&all);
  21. let flag2 = is_data_valid(&string);
  22. println!("{}", flag1);
  23. println!("{}", flag2);
  24. }
  25.  
  26. fn is_data_valid(val: &serde_json::Value) -> bool {
  27. match val.as_object() {
  28. Some(map) => {
  29. for key in map.keys() {
  30. if !is_data_valid(&map[key]) {
  31. return false;
  32. }
  33. }
  34. true
  35. },
  36. None => {
  37. match val.as_array() {
  38. Some(array) => {
  39. for obj in array {
  40. if !is_data_valid(&obj) {
  41. return false;
  42. }
  43. }
  44. true
  45. },
  46. None => val.is_string()
  47. }
  48. },
  49. }
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement