GVKun编程网logo

乱码——JSON字符串有含有看不见的未知字符(json 不可见字符)

7

针对乱码——JSON字符串有含有看不见的未知字符和json不可见字符这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展C#之json字符串转xml字符串、C#对象转JSON字符串和JSON字符

针对乱码——JSON字符串有含有看不见的未知字符json 不可见字符这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展C#之json字符串转xml字符串、C#对象转JSON字符串和JSON字符串转对象、Delphi中有看不见的异常字符存在的解决方法、fastjson--Gson生成Json字符串,并且解析Json字符串生成对象等相关知识,希望可以帮助到你。

本文目录一览:

乱码——JSON字符串有含有看不见的未知字符(json 不可见字符)

乱码——JSON字符串有含有看不见的未知字符(json 不可见字符)

当JSON字符串中含有未知字符时,会导致页面显示不出来。这在开发时很常见啊。

今天俺就遇到了。线上BUG,显示不出来,问题就在于,这个字符串有可能是从其它地方copy过来的。

首先,把线上本应显示出来的数据还原到本地后,一条条地排查,一百二十几条,里头有二十几条数据都是这个原因啊。咯,就是下面NotePad里显示的这个东西啊。就是这个玩意儿,导致页面数据显示不出来的。

现在把今天找出这个罪魁祸首的方法记下来,希望大家遇到这样的问题也可以尝试一下,看能不能解决。

            首先,找出未知字符。页面展示的数据源是数据库,好,先把数据库里的数据查出来,复制到eclipse里(不得不说,eclipse太强大了,当数据量过大,不能全部复制到编辑器里时候,先尝试着复制到eclipse里,再弄到编辑器里吧(*^__^*) )。当复制到NotePad里的时候,上面这种的就显示出来了,不过在数据库里是显示不出来的,这就是看不见的未知字符啦。另外,我也尝试了一下,EditPlus并不能把这些看不见的字符显示出来,成上面的样子哦。

           然而,待俺把数据这个数据全部替成空,提交完写好SQL脚本后,我就想,这个看不见的字符底是个啥玩意儿呢?因为前端用的Extjs,所以,当然是去翻翻看,关于String字符串的处理方法咯。偶试过

1.Ext.String.htmlEncode(value);  编码字符串,对其中特殊字符进行转义

Ext.String.htmlEncode("hello''world");    //"hello'world"

2.Ext.String.htmlDecode(value);  解码字符串,对其中的转义字符进行还原

Ext.String.htmlDecode("hello'world");    //"hello''world"

然而并不起什么用。

              试过用正则去匹配上面看不见的字符,还试着加转义字符。还是没有用啊。。。。。

             于是,我跟领导提议,禁用粘贴功能吧。我代码都写好啦~~~

    var context_dom = Ext.select(''textarea[name=msgOnlineVo.msgOnlineDto.remarks]'');//获取dom对象            
    context_dom.on(''paste'',function(e){//禁止粘贴                                                                                                           
          console.log(''no paste'');                                                                                                                                           
          e.stopEvent();                                                                                                                                                           
    });                                                                                                                                                                                      
   context_dom.on(''copy'',function(e){   //禁止复制                                                                                                          
        console.log(''no copy'');                                                                                                                                               
        e.stopEvent();                                                                                                                                                             
     });                                                                                                                                                                                     
   context_dom.on(''contextmenu'',function(e){    //禁止右键                                                                                                                                                                                                                                                                                          
        console.log(''no contextmenu'');                                                                                                                                 
        e.stopEvent();                                                                                                                                                             
      })                                                                                                                                                                                     

             领导拒绝了,文本框不能粘贴,用户会骂人的/(ㄒoㄒ)/~~。不行不行。可是我又不想,每次去排查啊。那么,懒人有懒招了。我一定要把这个害人的字符揪出来。里面的方法我都试了一遍啊,试到了这两个方法,Unicode code,看来这两个有点用。

好,把上面那串字符串里,那个特殊字符所在的位揪出来,看看在unicode code是多少。哼~~~

特殊字符替换为空白后,再复制到NotePad里看看,我的乖乖,没问题了。特殊字符处理掉了。

至此,大功告成,再也不用担心被用户骂了~~~~~~~~

C#之json字符串转xml字符串

C#之json字符串转xml字符串

留爪参考

using System.Xml; //
using System.Text; //
using System.Runtime.Serialization.Json; //JsonReaderWriterFactory
//以下method引用以上using

    /// <summary>
    /// Json字符串转xml字符串(utf-8)
    /// </summary>
    /// <param name="json">json字符串</param>
    /// <returns>xml字符串</returns>
    public string JsonToXml(string json)
    {
        string xml = string.Empty;
        XmlDocument xmlDoc = new XmlDocument();
        try
        {
            XmlDictionaryReader xmlReader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(json), XmlDictionaryReaderQuotas.Max);
            xmlDoc.Load(xmlReader);
            //json转xml

            XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "yes");
            //创建xml声明
            xmlDoc.InsertBefore(xmlDec, xmlDoc.DocumentElement); //插入xml声明
            //xmlDoc.AppendChild(xmlDec);
            //添加xml声明
        }
        catch (Exception ex)
        {          
            //
        }
        return xmlDoc.OuterXml; //xml转string
    }

C#对象转JSON字符串和JSON字符串转对象

C#对象转JSON字符串和JSON字符串转对象

C#对象转JSON字符串和JSON字符串转对象
 
/* 创建者:菜刀居士的博客
 * 创建日期: 2014年09月03号
 * 功能: Json操作
 *
  */
 
namespace Net.String.ConsoleApplication
 {
    using System;
    using System.Data;
    using System.Collections;
    using System.ComponentModel;
    using System.Collections.Generic;
    using System.Web.Script.Serialization;
  
 
    public class JsonHelper
    {
        /// <summary>
        /// 把json字符串转成对象
        /// </summary>
        /// <typeparam name="T">对象</typeparam>
        /// <param name="data">json字符串</param>
        public static T Deserialize<T>(string data)
        {
            System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();
            return json.Deserialize<T>(data);
        }
 
        /// <summary>
        /// 把对象转成json字符串
        /// </summary>
        /// <param name="o">对象</param>
        /// <returns>json字符串</returns>
        public static string Serialize(object o)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();
            json.Serialize(o, sb);
            return sb.ToString();
        }
 
        /// <summary>
        /// 把DataTable对象转成json字符串
        /// </summary>
        public string ToJson(DataTable dt)
        {
            JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
            ArrayList arrayList = new ArrayList();
            foreach (DataRow dataRow in dt.Rows)
            {
                Dictionary<string, object> dictionary = new Dictionary<string, object>();
                foreach (DataColumn dataColumn in dt.Columns)
                {
                    dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName]);
                }
                arrayList.Add(dictionary);
            }
            return javaScriptSerializer.Serialize(arrayList);
        }
    }
 
    public static class EnumerableExtension
    {
        /// <summary>
        /// 集合添加一个对象
        /// </summary>
        public static IEnumerable<T> Add<T>(this IEnumerable<T> e, T value)
        {
            foreach (var cur in e)
            { yield return cur; }
            yield return value;
        }
 
        /// <summary>
        /// 把集合转成DataTable
        /// </summary>
        public static DataTable ConvertToDataTable<T>(this IEnumerable<T> enumerable)
        {
            var dataTable = new DataTable();
            foreach (PropertyDescriptor pd in TypeDescriptor.GetProperties(typeof(T)))
            {
                dataTable.Columns.Add(pd.Name, pd.PropertyType);
            }
            foreach (T item in enumerable)
            {
                var Row = dataTable.NewRow();
 
                foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T)))
                {
                    Row[dp.Name] = dp.GetValue(item);
                }
                dataTable.Rows.Add(Row);
            }
            return dataTable;
        }
    }
 }

Delphi中有看不见的异常字符存在的解决方法

Delphi中有看不见的异常字符存在的解决方法

总结

以上是小编为你收集整理的Delphi中有看不见的异常字符存在的解决方法全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

fastjson--Gson生成Json字符串,并且解析Json字符串生成对象

fastjson--Gson生成Json字符串,并且解析Json字符串生成对象

json.jar地址下载 点击打开链接

+++++++++++++++++++++++++++++先看fastjson的使用方法++++++++++++++++++++++++++++++++

Student

package com.example.fastjson;
public class Student {  

    private String name;  

    private int age;  
    /**
     * 默认的构造方法必须要写,不然是无法解析的
     */
    public Student() {  

    }  
      
    public Student(String name,int age){  
        this.name = name;  
        this.age = age;  
    }  

    public int getAge() {  
        return age;  
    }  

    public void setAge(int age) {  
        this.age = age;  
    }  

    public String getName() {  
        return name;  
    }  

    public void setName(String name) {  
        this.name = name;  
    }  

    @Override
    public String toString() {
    	return "Student [name=" + name + ",age=" + age + "]";  
    }
}  

Grade

package com.example.fastjson;
import java.util.ArrayList;
import java.util.List;

public class Grade {  

    private String gradeName;  
      
    private List<Student> students = new ArrayList<Student>();  

    public Grade() {  

    }  
      
    public Grade(String gradeName) {  
        this.gradeName = gradeName;  
    }  

    public String getGradeName() {  
        return gradeName;  
    }  

    public void setGradeName(String gradeName) {  
        this.gradeName = gradeName;  
    }  

    public List<Student> getStudents() {  
        return students;  
    }  

    public void setStudents(List<Student> students) {  
        this.students = students;  
    }  
      
}  


MainActivity
package com.example.fastjson;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		/**
		 * 1、1输出javaBean的json格式
		 */
		Student student = new Student("dandy",27);  
		String jsonStudent1 = JSON.toJSONString(student);  
		String jsonStudent2 = JSON.toJSONString(student,true);  
		
		//jsonStudent:{"age":27,"name":"dandy"}
		Log.i("TAG","jsonStudent1 standard:"+jsonStudent1);
		Log.i("TAG","jsonStudent2 true:"+jsonStudent2);
		/**
		 * 1、2输出javaBean的特定属性json格式
		 * new SimplePropertyPreFilter(实体类.class,"字段一","字段二"); 
		 */
		SimplePropertyPreFilter filter = new SimplePropertyPreFilter(Student.class,"name");  
		String jsonStudent = JSON.toJSONString(student,filter);  
		Log.i("TAG","jsonStudent filter:"+jsonStudent);
		
		/**
		 * 1、3输出复杂的javaBean(带集合的)
		 */
		Grade grade = new Grade("高一");  
		grade.getStudents().add(new Student("dandy",27));  
		grade.getStudents().add(new Student("Tabolt",28));  
		String jsonGrade = JSON.toJSONString(grade);  
		Log.i("TAG","jsonGrade:"+jsonGrade);
		
		/**
		 * 2、1Json生成javaBean对象实例
		 */
		String json = JSON.toJSONString(new Student("Tabolt",28));  
		Student studentBean = JSON.parSEObject(json,Student.class);  
		Log.i("TAG","studentBean:"+studentBean);
		
		/**
		 * 2、2Json生成javaBean对象实例 集合
		 */
	    List<Student> students = new ArrayList<Student>();  
	    for(int i = 0;i < 5;i++){  
	        Student studentFor = new Student("dandy_"+i,26+i);  
	        students.add(studentFor);  
	    }  
	    String jsonFor = JSON.toJSONString(students);  
	    List<Student> stus1 = JSON.parseArray(jsonFor,Student.class);
	    List<Student> stus2 = JSON.parSEObject(jsonFor,new TypeReference<List<Student>>(){});  
	    for(Student stu:stus1){  
	    	Log.i("TAG","studentBean:"+stu.toString());
	    }  
	    for(Student stu:stus2){  
	    	Log.i("TAG","studentBean:"+stu.toString());
	    }  
	}
}


log输出如下。。。


+++++++++++++++++++++++++++++先看Gson的使用方法++++++++++++++++++++++++++++++++

package com.example.gsondemo;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

import com.google.gson.Gson;
import com.google.gson.reflect.Typetoken;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		/**
		 * 1、1gson解析对象
		 */
		Gson gson = new Gson();
		Student student = new Student("dandy",27);
		String stuStr = gson.toJson(student);
		Log.i("TAG","str:" + stuStr);

		/**
		 * 1、2gson解析数组对象
		 */
		Grade grade = new Grade("高一");
		grade.getStudents().add(new Student("dandy",27));
		grade.getStudents().add(new Student("Tabolt",28));
		String str = gson.toJson(grade);
		Log.i("TAG","str:" + str);

		/**
		 * 
		 * 2、1 gson解析字符串为javaBean对象
		 */
		Student fromJson2Stu = gson.fromJson(stuStr,Student.class);
		Log.i("TAG","fromJson2Stu-->" + fromJson2Stu.toString());

		/**
		 * 2、2gson解析字符串为javaBean对象集合
		 */
		List<Student> students = new ArrayList<Student>();
		for (int i = 0; i < 5; i++) {
			Student studentFor = new Student("dandy_" + i,26 + i);
			students.add(studentFor);
		}
		String jsonFor = gson.toJson(students);

		List<Student> fromJson2StuArr = gson.fromJson(jsonFor,new Typetoken<List<Student>>() {
				}.getType());
		for (int i = 0; i < fromJson2StuArr.size(); i++) {
			Student student2 = fromJson2StuArr.get(i);
			Log.i("TAG","student2-->" + student2.toString());

		}

	}

}

我们今天的关于乱码——JSON字符串有含有看不见的未知字符json 不可见字符的分享已经告一段落,感谢您的关注,如果您想了解更多关于C#之json字符串转xml字符串、C#对象转JSON字符串和JSON字符串转对象、Delphi中有看不见的异常字符存在的解决方法、fastjson--Gson生成Json字符串,并且解析Json字符串生成对象的相关信息,请在本站查询。

本文标签: