有没有人知道PHP的强大(和防弹)is_JSON函数代码段?我(显然)有一种情况,我需要知道字符串是否是JSON。
嗯,也许通过JSONLint请求/响应来运行它,但这看起来有点矫枉过正。
答案 0 :(得分:64)
如果您使用内置的json_decode
PHP函数,json_last_error
会返回上一个错误(例如,当您的字符串不是JSON时,JSON_ERROR_SYNTAX
)。
通常json_decode
会返回null
。
答案 1 :(得分:17)
使用json_decode
怎么样?如果给定的字符串不是有效的JSON编码数据,它应该返回null
?
参见手册页上的示例3:
// the following strings are valid JavaScript but not valid JSON
// the name and value must be enclosed in double quotes
// single quotes are not valid
$bad_json = "{ 'bar': 'baz' }";
json_decode($bad_json); // null
// the name must be enclosed in double quotes
$bad_json = '{ bar: "baz" }';
json_decode($bad_json); // null
// trailing commas are not allowed
$bad_json = '{ bar: "baz", }';
json_decode($bad_json); // null
答案 2 :(得分:16)
对于我的项目,我使用此功能(请阅读json_decode()文档中的" 注意"
传递你传递给json_decode()的相同参数,你可以检测特定的应用程序"错误" (例如深度错误)
PHP> = 5.6
// PHP >= 5.6
function is_JSON(...$args) {
json_decode(...$args);
return (json_last_error()===JSON_ERROR_NONE);
}
PHP> = 5.3
// PHP >= 5.3
function is_JSON() {
call_user_func_array('json_decode',func_get_args());
return (json_last_error()===JSON_ERROR_NONE);
}
用法示例:
$mystring = '{"param":"value"}';
if (is_JSON($mystring)) {
echo "Valid JSON string";
} else {
$error = json_last_error_msg();
echo "Not valid JSON string ($error)";
}
答案 3 :(得分:4)
json_decode()
json_last_error()
不适合您吗?您是否正在寻找一种方法来说“看起来像JSON”还是实际验证它? json_decode()
是在PHP中有效验证它的唯一方法。
答案 4 :(得分:3)
$this->post_data = json_decode( stripslashes( $post_data ) ); if( $this->post_data === NULL ) { die( '{"status":false,"msg":"The post_data parameter must be valid JSON"}' ); }
答案 5 :(得分:1)
这是最好,最有效的方法
@XmlType
public class Mapusergroups extends PlanroomMigrationEntity implements
java.io.Serializable {
private int idMapUserGroups;
private Users users;
private Groups groups;
public Mapusergroups() {
}
@Deprecated
public Mapusergroups(Users users, Groups groups) {
this.users = users;
this.groups = groups;
}
@XmlAttribute
public int getIdMapUserGroups() {
return this.idMapUserGroups;
}
@XmlAttribute
@XmlID
public String getIdMapUserGroupsString() {
return "" + this.idMapUserGroups;
}
public void setIdMapUserGroups(int idMapUserGroups) {
this.idMapUserGroups = idMapUserGroups;
}
@XmlAttribute
@XmlIDREF
@PlanroomMigrationEntity.ReferenceToUser
public Users getUsers() {
return this.users;
}
public void setUsers(Users users) {
this.users = users;
}
@XmlAttribute
@XmlIDREF
@PlanroomMigrationEntity.PathUpToCompany
public Groups getGroups() {
return this.groups;
}
public void setGroups(Groups groups) {
this.groups = groups;
}
@Override
public BaseWrapper<?> getWrapper() {
return new WMapUserGroups(this);
}
@Override
public PlanroomMigrationDAO getDao() {
return new MapUserGroupsDAO();
}
@Override
public void attachReferences(JSONObject json, ObjectFinder finder)
throws JSONException {
this.users = json.has("userId") ? (Users) finder.lookup(Users.class,
json.get("userId").toString()) : null;
this.groups = json.has("groupId") ? (Groups) finder.lookup(
Groups.class, json.get("groupId").toString()) : null;
}