input: Write a function to extract specific features from a JSON string and return them as a dictionary. The function should take a JSON string as input and extract the "id", "title", and calculate the length of the "body" text. Return these features in a dictionary format. If the JSON string is invalid or missing any of the required fields, handle it appropriately.
  
  assert feature_extraction('{"id":111,"title":"This is a sample title","body":"This is a sample body text"}')=={"id": 111, "title": "This is a sample title", "body_len": 28}
  assert feature_extraction('{"id":222,"title":"Another title","body":"Short body"}')=={"id": 222, "title": "Another title", "body_len": 10}
  assert feature_extraction('{"id":333,"title":"","body":""}')=={"id": 333, "title": "", "body_len": 0}
output: try:
      data = json.loads(json_string)
      if 'id' in data and 'title' in data and 'body' in data:
          return {"id": data['id'], "title": data['title'], "body_len": len(data['body'])}
      else:
          return {}
  except json.JSONDecodeError:
      return {}